home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / utilities / shell / zshell24.lha / ZShell24 / ZShell.doc < prev    next >
Encoding:
Text File  |  1995-02-10  |  93.9 KB  |  2,187 lines

  1. ----------------------------------------------------------------------------
  2.             #============================================#
  3.             #    ZSHELL V1.30 (C) 1990,91 PAUL HAYTER    #
  4.             # updated to V2.3 (C) 1993,94 MARTIN GIERICH #
  5.             #============================================#
  6.  
  7. If you have used another version of ZShell, please read Changes.
  8. OS2.0+ means Kickstart and Workbench versions are better than 2.0
  9. OS1.3- means Kickstart and Workbench versions are older than 1.3
  10.  
  11. ----------------------------------------------------------------------------
  12. CONTENTS
  13.  
  14. For those who never read the whole Documentation
  15. Introduction and Concepts
  16. Features
  17. Distribution
  18.  
  19. Starting ZShell
  20. Starting ZShell using KingCON
  21. History and Command Line Editing
  22. Executing Commands
  23. Wild Cards
  24. Filenamecompletion
  25. Options
  26. Redirect Input/Output
  27.  
  28. Command Overview
  29. Builtin Commands for Disk Management
  30. Builtin Commands for Scripts and Controlling
  31. Builtin Commands for Advanced Users
  32.  
  33. Changes                               ->Past
  34. Tips and Hints                        ->Present
  35. Possibilities for Future Improvements ->Future
  36.  
  37. Copyright
  38. Credits
  39. Authors
  40. --------------------------------------------------------------------------
  41. For those who never read the whole Documentation
  42.  
  43. Start the file called ZShell from Workbench or CLI (SHELL), or even
  44. better: Put the file ZShell in the C: directory and start the file ZSH.
  45. Now press the HELP key. Among lots of other information you see "TYPE HELP
  46. ? ...". Make sure that ZShell.doc is in the current directory or in S:
  47. and try that. You will see how to use the ONLINE HELP. Try to type
  48. "HELP HISTORY" to see how command line editing works. Execute the
  49. example startup file "ZStart" or put it into the S: drawer and
  50. have a look at it.
  51. Please send me your comment; my Internet-Adress is:
  52. uj3w@ibm3090.rz.uni-karlsruhe.de (Martin Gierich).
  53.  
  54. Things somewhere hidden in the documentation:
  55. * To avoid using an internal command or an alias, you can put a point
  56.   before it, eg. ".list libs:".
  57. * To complete a filename, type in a bit then press TAB.
  58. * If you use "ctrl -c *.info", DIR and Filenamecompletion ignores Icons.
  59. * To start buffering output, use "review 20000". Press Shift+TAB to see it.
  60. * If you have OS3.0+, try "ctrl -r 01111111".
  61. * If you start ZShell from the Workbench-Menu "Execute Command", you
  62.   can close the window after ending ZShell with CTRL-\ .
  63. * Instead of "RUN <NIL: >NIL: command" use "RUN -C command".
  64. * You get a standard prompt with: prompt "%n.%p> "
  65. Aliases work different to them in normal Shell.
  66. * See FLAGS on how to configure some things you need.
  67.   With that you can switch on Iconifying and use AmigaDOS wildcards.
  68. * Try "flags debug on" to debug your script-files.
  69. * See Tips and Hints for more.
  70. --------------------------------------------------------------------------
  71. Introduction
  72.  
  73. ZShell is a small, fast and powerful Shell.
  74. Have a look at Features to see the advantages.
  75. ZShell is tested with Kickstart 1.3 , 2.04 and 3.0 and should
  76. run also with other Kickstarts. There are no special requirements.
  77. I tried to made usage similar to AmigaDOS. If you did not
  78. understand something, have a look at your AmigaDOS usermanual.
  79.  
  80. I have heard that there is a Shell called "zsh" on UNICS-systems. ZShell
  81. has nothing to do with it, because it tries to be AmigaDOS compatible,
  82. not just another UNICS shell clone. The compatibility is, of course, not
  83. 100%, if you need that use the original AmigaDOS Shell. So ZShell has some
  84. differences, that give the special feeling of it.
  85. The first main advantage of ZShell is its power/size ratio. In just 30K
  86. there are all often needed commands (like list,copy etc.) and some not
  87. so often needed, which do not increase size much.
  88. The second main advantage is the Filenamecompletion (short: FNC) and the
  89. review buffer. FNC is like those shells on UNICS and can therefore be
  90. controlled fully with the keyboard. No annoying filerequesters pop up,
  91. that make it neccessary to change from keyboard to mouse.
  92. Nevertheless you can use ZShell with (memory hungry and slow) console
  93. handlers like KingCON.
  94.  
  95. See Future for the future concepts.
  96. --------------------------------------------------------------------------
  97. Features
  98.  
  99. Freeware, no payment required.
  100. * Usage is similar (or better) to the standard AmigaDOS shell.
  101. * About 30K small (pure assembler code, source included).
  102. * Supports the standard housekeeping commands which are builtin,
  103.   so no disk access is necessary.
  104.   eg. list, dir, cd, rename, makedir, delete, copy, path, info, type
  105. * A total of 65 builtin commands.
  106. Starting from Workbench or CLI/Shell.
  107. Filenamecompletion by simply pressing TAB.
  108. Review-buffer to see what scrolled out of the window.
  109. Command line editing better than OS2.0+.
  110. * Command and Function key aliasing.
  111. Online Help function and AmigaGuide-Documentation with examples.
  112. * Some commands and features for programmers.
  113. * Can create and show Hard- and Softlinks.
  114. * Support of OS2.0+ specific features
  115. * Can iconify itself.
  116. * Colorful output (or fast scrolling with OS3.0+, see CTRL -R)
  117. DIR and LIST both sort (by default) and show filesize.
  118. * Simple MORE type text viewer.
  119. * Makes itself resident for quicker starting and memory saving.
  120. Script file execution and special script commands (like IF, ASK).
  121. --------------------------------------------------------------------------
  122. Distribution
  123.  
  124. Following files belong to this document:
  125.  1) ZShell           The main executable
  126.  2) ZSH              The small starter
  127.  3) ZShell.doc       The documentation (and online help manual)
  128.  4) ZShell.guide     The AmigaGuide documentation
  129.  5) ReadMe           Short description
  130.  6) ZStart           An example startup script (can be put in S: )
  131.  7) ZShell.s         Source code of the main executable
  132.  8) ZSH.s            Source code of the small starter
  133.  and some icons.
  134. --------------------------------------------------------------------------
  135. Starting ZShell
  136.  
  137. * There are three ways of starting ZShell:
  138.   1. The easiest way:
  139.      Start the file called "ZShell" from Workbench or CLI/Shell.
  140.   2. Put the file called "ZShell" in the C: directory and
  141.      start the file called "ZSH" from Workbench or CLI/Shell.
  142.   3. A bit complicated and only for starting from Workbench:
  143.      Make a startup script (see below) or an empty file with a PROJECT
  144.      icon. Change the default tool to "ZSH" or "ZShell" (better ZSH,
  145.      but put ZShell in C: ) with the right path. Doubleclicking on
  146.      this project icon will start ZShell and execute its script.
  147.      You can also shift-doubleclick a startup script with ZSH/ZShell.
  148.  
  149. (You can rename "ZSH" as what you like, but do not rename "ZShell").
  150. The first way is recommended for having a quick glance at ZShell,
  151. but if you use ZShell sometimes, the second way is better.
  152. Why ? Because "ZSH" is about 800 Bytes long and starts the ZShell-
  153. resident if possible. So loading "ZShell" is only necessary the first
  154. time you use ZShell after booting up.
  155.  
  156. * If starting from CLI/Shell you can specify the name of a script file
  157.   (see EXECUTE) as an argument which will be executed after starting.
  158.   Precede the name with "-s". If there is no name given, ZShell will try
  159.   to execute S:ZStart . After "-w" you can specify a window-description.
  160.   See NEWCLI for more details, it is exactly the same.
  161.   eg.     ZSH -sram:hello     {will try to execute ram:hello}
  162.           ZShell              {will try to execute S:ZStart}
  163.           ZSH -sram:hello "-wCON:10/10/90/90/Hi there" {opens this window}
  164.  
  165.   All CLI-Options:
  166.   -Sname (Script): Start script named "name"
  167.   -Wdesc (Window): Open window with window-description "desc"
  168.   -Ccmd (Command): Start command named "cmd"
  169.   -D     (Detach): Creates its own process (must be last option)
  170.   -N      (Noraw): Switches off the internal command-line-editing
  171.   -R (not Resident): Testing-stuff (must be first option and lowercase)
  172.  
  173. * If starting from Workbench you can specify the window-description
  174.   and the startup script (default S:ZStart , see above) with ToolTypes:
  175.   eg.     WINDOW=con:20/50/400/100/Moin
  176.           SCRIPT=ram:hello
  177.           WINDOW=             {this would not open a window}
  178.   Make sure that WINDOW and SCRIPT are in capital letters.
  179.   (You can edit the ToolTypes by selecting an icon and then choosing
  180.   "Information" from the Workbench-Menu.)
  181.  
  182.   All ToolTypes:
  183.   SCRIPT=name : Start script named "name"
  184.   WINDOW=desc : Open window with window-description "desc"
  185.   COMMAND=cmd : Start command named "cmd"
  186.   NORAW=      : Switches off the internal command-line-editing
  187.   ICONNAME=name : Specify name of the icon for iconifying (OS2.0+)
  188.   XPOS=number : Give the position of the icon (OS2.0+)
  189.   YPOS=number : Give the position of the icon (OS2.0+)
  190.   ICONIFY=    : Start in iconifyed mode (OS2.0+)
  191.  
  192. * NOTE1: If you start ZShell from the Workbench-Menu "Execute Command",
  193.   you can close the window after ending ZShell with CTRL-\ .
  194. * NOTE2: ZShell and ZSH are PURE (see RESIDENT,PROTECT).
  195. --------------------------------------------------------------------------
  196. Starting ZShell using KingCON
  197.  
  198. KingCON is a Console-Handler with some GUI-Features.
  199. If you do not use KingCON, you can skip this chapter.
  200.  
  201. Starting from CLI/Shell:
  202.   Use the option -n, and you can optionally use option -w.
  203.   Examples:  ZShell -n
  204.              ZShell -wKCON: -n
  205.  
  206. Starting from Workbench:
  207.   Use the ToolTypes NORAW and WINDOW=KCON:
  208.  
  209. The CLI-Option "-n" and the ToolType "NORAW" switch off the internal
  210. command-line-editor, so you could make use of the command-line-
  211. editing facilities of KingCON.
  212. There is a bug in KingCON version 1.3: If you are in the MORE text
  213. viewer, you should not use menus, otherwise ZShell will exit immediately.
  214. The bug is, that KingCON sends some control sequences even if they are
  215. switched off. The author has not answered my mail when I told him the bug.
  216. --------------------------------------------------------------------------
  217. History and Command Line Editing
  218.  
  219. ZShell has a 1024 byte circular history buffer. It works similar
  220. to most other shells, the NEWCON: handler in Workbench V1.3 and
  221. the standard console handler in OS2.0+.
  222.  
  223. You can change the edit keys with CTRL. These are the default keys:
  224.   UP ARROW        - go back one line in the history buffer
  225.   DOWN ARROW      - go forward one line in the history buffer
  226.   SHIFT UP ARROW  - go to the 1st line in the history buffer if nothing
  227.                     was typed. Otherwise the string left of the cursor
  228.                     will be searched in history buffer (like in OS2.0+)
  229.   SHIFT DOWN ARROW- go to the last line in the history buffer, which
  230.                     holds the last modified line
  231.   LEFT ARROW      - move cursor left
  232.   RIGHT ARROW     - move cursor right
  233.   SHIFT LEFT ARROW- move cursor to left end
  234.   SHIFT RIGHT ARROW move cursor to right end
  235.   
  236.   CTRL S          - move cursor to start of line
  237.   CTRL E          - move cursor to end of line
  238.   CTRL R          - move cursor to start of previous word
  239.   CTRL T          - move cursor to start of next word
  240.  
  241.   CTRL W          - delete one word right of cursor
  242.   CTRL Q          - delete one word left of cursor
  243.   CTRL X          - delete whole line
  244.   CTRL L          - clear the ZShell window
  245.  
  246.   RETURN          - put commandline in history-buffer and execute it
  247.   SHIFT RETURN    - put commandline in history-buffer without executing
  248.   TAB             - see FILENAMECOMPLETION (that is great !)
  249.   SHIFT TAB       - read review-buffer with MORE
  250.   CTRL V          - read history-buffer with MORE
  251.   ESC (Escape)    - quit ZShell like ENDCLI (I like this very much !)
  252.  
  253. Words are delimited by space, point, slash and colon ( ./:).
  254. Again, command line editing is similar to most shells. Backspace,
  255. delete and return do what they are supposed to do.
  256. --------------------------------------------------------------------------
  257. Executing Commands
  258.  
  259. Most commands can be aborted by depressing Control-C.
  260. Nearly everything is case independent.
  261. To use a disk command simply type its name after the prompt, the
  262. same way as you would do in other shells. The first part of the input
  263. up to the first space is interpreted as commandname. It is searched
  264. for (in this order) :
  265.   1. in the alias list
  266.   2. in the internal (builtin) command list (see BUILTIN COMMANDS)
  267.   3. in the resident command list
  268.   4. in the current directory (see CD)
  269.   5. in the command search path
  270. and, if it is found, it is executed. The part after the first space
  271. is taken as arguments, also called parameters. The arguments are
  272. separated by spaces. ZShell will allow up to 25 arguments.
  273. If the commandname is a directory, the current directory will be
  274. changed (see CD).
  275.  
  276. eg.     addbuffers df0: 15
  277. "addbuffers" is the command, that will be found as a internal command.
  278. "df0:" is the first argument. "15" is the second argument. The third
  279. argument does not exist.
  280.  
  281. You can avoid using an alias or an internal (builtin) command or
  282. changing the current directory by typing a point before the
  283. commandname (this is called "force disk").
  284. To abbreviate internal or resident commands put a point behind it.
  285. If you use just a point, the current directory will be set to the
  286. last current directory ("dir back").
  287.  
  288. eg.     .addbuffers df0: 20
  289. {This uses the disk command or if available the resident addbuffers}
  290.         ad. df0: 20  {uses the internal addbuffers command}
  291.         .ad. df0: 20 {if available this uses the resident addbuffers}
  292.         .            {go back to old current dir}
  293.  
  294. BEWARE of other matching commands! The first matching will be taken!
  295. res. can mean reset or resident, but reset will be taken !
  296. There is no abbreviation for disk commands, take FileNameCompletion
  297. ( TAB-Key ) instead.
  298.  
  299. A textual error message will be displayed if an AmigaDOS error occurs.
  300. --------------------------------------------------------------------------
  301. Wild Cards
  302.  
  303. ZShell supports wild card file descriptions on some commands
  304. (DIR,LIST,DELETE,COPY,CTRL,JOIN,MOVE,PROTECT)
  305. Wild cards are like those supported on MessyDOS or UNICS systems, and not
  306. the same as the ones on AmigaDOS. So use * instead of #? .
  307. NOTE: You can only effectively put one * character in a wild card.
  308.  
  309. If you would like to use AmigaDOS wildcard-patternmatching use
  310. FLAGS WILD ON (this uses MatchPatternNoCase(), so OS2.0+ only).
  311.  
  312. Character       Meaning
  313.   *         Match zero or more characters.
  314.   ?         Match one character.
  315.   ~         Negates the following wildcard.
  316.  [  ]       Specifies a class of characters to match.
  317.             (One of the characters in the brackets must match)
  318.   |         Separate multiple filenames (can be wildcards)
  319.             (One of the file descriptions separated by | must match)
  320.  
  321. To get that just try the examples following and try it out with DIR.
  322. eg.    list *.info      {lists all files ending in .info}
  323.        dir z*.s         {lists all files starting z, ending in .s}
  324.        delete df0:*.info   {deletes all .info files from df0:}
  325.        copy *.s ram:    {copies all .s files to ram:}
  326.        copy 1? df0:     {copies all two char files beginning with 1}
  327.        dir ~*.s         {lists all files NOT ending in .s}
  328.        list ~*.info     {lists all files except for .info files}
  329.        dir *.[co]       {lists files ending in .c or .o}
  330.        list [abcd]*     {lists files beginning with a,b,c or d}
  331.        list c:mount|version {lists the files Mount and Version}
  332.        list ram:env/a*|*b   {lists all files starting with a or
  333.                              ending with b from RAM:env (environment)}
  334.        copy ~*.info|*.bak   {copies all files NOT ending in .info
  335.                              and NOT ending in .bak}
  336. --------------------------------------------------------------------------
  337. Filenamecompletion
  338.  
  339. Filenamecompletion makes typing long filenames and directorynames
  340. easier. It does not matter if you want to type it as command or as
  341. argument. Just type some beginning characters of the desired name and
  342. then press TAB . If there is more than one possibility that
  343. match, it will only be completed as far as all possibilities match.
  344. In this case type the next character then again press TAB . If a
  345. filename was fully matched, a space after it will be inserted. If
  346. a directoryname was fully matched, a slash (/) will be inserted after.
  347. If no partial match is found, the screen blinks (display beep).
  348.  
  349. Maybe you do not want *.info files to be completed. This will avoid
  350. some trouble. Use "ctrl -c *.info" for that or see CTRL -C.
  351.  
  352. If you do not want to see all files that match,you can use
  353. FLAGS MATCH OFF.
  354.  
  355. For example a directory contains:
  356.   MegaEditExample
  357.   MegaEditExample.info
  358.   MegaViewer
  359.   MoreMegaFiles               {directory}
  360.  
  361. If you want to change the current directory to MoreMegaFiles you type:
  362.     mo
  363. then press the TAB key. You will see the full name with a slash at the
  364. end. Just press RETURN and you changed it.
  365. To delete MegaViewer you type:
  366.     delete me
  367. and press TAB . You will see "Mega". Now type the V key and
  368. press TAB again. You see "delete MegaViewer ". Press RETURN and
  369. it will be gone.
  370. You want to start MegaEditExample. Type:
  371.     me
  372. and press TAB. Then type E and press TAB. There is no space after the
  373. name. This is because MegaEditExample.info also matches.
  374. Start it by pressing RETURN.
  375. --------------------------------------------------------------------------
  376. Options
  377.  
  378. As nearly everything, options are also case independent.
  379. The internal commands support only four options, because this is easier
  380. to remember. These options start with a dash (-) .
  381.  
  382.   1. -C or -CLEAR , used by AVAIL,ENDCLI,LOCATE,PATH,
  383.               RESIDENT,RUN,CTRL
  384.   2. -R or -RECURSIVE , used by COPY,DELETE,DIR,LIST,JOIN,
  385.               MOVE,PROTECT
  386.   3. -Q or -QUICK , used by DIR,LIST,DELETE
  387.   4. -S or -SORT , used by COPY,JOIN,MOVE,PROTECT
  388. So instead of typing "dir -q" you can also type "dir -quick".
  389.  
  390. Instead of -R you could also use ALL , if FLAGS ALL ON is set.
  391.  
  392. For some special cases there are longer options used: "delete bla force"
  393. FORCE is here an option. You can abbreviate this by a point (see CTRL),
  394. so "delete bla f." is the same.
  395. --------------------------------------------------------------------------
  396. Redirect Input/Output
  397.  
  398. The standard redirection operators are supported for all internal
  399. commands, as well as disk based programs. (Redirection only affects
  400. those programs which use the dos.library's Input() and Output()
  401. functions.)
  402.  
  403.     >  redirect std output.
  404.     <  redirect std input.
  405.     >> append redirect output. (tacks output onto the end of file)
  406.     <> redirect input and output.
  407.     >M view output after the command has ended with MORE,
  408.        you need a review-buffer for that which is big enough,
  409.        otherwise some of the output will be swallowed.
  410.  
  411. eg.    dir >ram:directory df0:c
  412.        type zshell.doc <raw:0/0/100/100/input >raw:0/0/640/100/output
  413.        sortfile things >>df0:things.log
  414.        list >m df0:             {view output with more}
  415.        copy > df0: ram:         {redirects to NIL: !}
  416. --------------------------------------------------------------------------
  417. Command Overview
  418.  
  419. AddBuffers drive [number_of_buffers]
  420. Alias [variable] [definition]
  421. Ask [question]
  422. Assign [logical name:] [directory] [ADD|DEFER|PATH|REMOVE]
  423. Avail [-C]
  424.  
  425. Border ON|OFF [number]
  426. Break task_description [signalmask|C|D|E|F]
  427. Cd [destination]
  428. Copy [-R] [-S] source1 [source2] ... [destination]
  429. Cls
  430. Comments
  431. Ctrl [max_16_chars | -C [ignore_name] | -R 8_colour_digits]
  432.  
  433. Date [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  434. Delete [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  435. Delete Device devicename [name [filesystem]]
  436. Die device
  437. Dir [-R] [-Q] [source1] [source2] ...
  438. DiskChange device
  439.  
  440. Echo [string]
  441. Else
  442. EndCLI [-C]
  443. EndIf
  444. Eval expression
  445. Execute source
  446.  
  447. FailAt [failat_level]
  448. Fault [error_number]
  449. FileNote file|directory comment
  450. Flags [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL] [ON|OFF]
  451.  
  452. GetMsg [portname]
  453. Help [topic]
  454. HType source
  455. If [NOT][WARN][ERROR][FAIL][EXISTS file]
  456. Info
  457.  
  458. Join [-R] [-S] source1 [source2] ... destination
  459. Lab label
  460. List [-R] [-Q] [source]
  461. Locate [-C] lock|filename
  462. Lock device ON|OFF
  463.  
  464. M [start_address] [end_address]
  465. MakeDir directory1 [directory2] ...
  466. MakeIcon filename [icontype]
  467. MakeLink linkname filename HARD|SOFT
  468. MemClk ON|OFF|ALARM
  469. More source [line count]
  470. Move [-R] [-S] source1 [source2] ... [destination]
  471.  
  472. NewCLI [-Wnew_window] [-Sstart_script] [-Ccommand]
  473. Path [-C] [path1] [path2] [path3] ...
  474. Prompt [string]
  475. Protect [-R] [-S] [file/dir1] [file/dir2] ... [+|-|h|s|p|a|r|w|e|d]
  476. PutMsg port_description [number1|string1] [number2|string2] ...
  477. Quit [error_code]
  478.  
  479. Relabel drive newname
  480. Rename source destination
  481. Resident [command1] [command2] ...
  482. Review [bytesize|S|C]
  483. Run [-C] commandline
  484.  
  485. Search file search_string
  486. SetClock LOAD|SAVE
  487. SetDate file|directory [date/time]
  488. Show D|I|L|M|P|R|S|T|V
  489. Skip label
  490. Stack [size]
  491. Strings sourcefile [count]
  492.  
  493. UnAlias [alias1] [alias2] [alias3] ...
  494. Wait timeout
  495. TaskPri priority [task_description]
  496. Type source
  497. --------------------------------------------------------------------------
  498. Builtin Commands for Disk Management
  499.  
  500. Following there are descriptions of the standard DOS commands which are
  501. builtin in ZShell (and therefore need not be loaded from disk).
  502. Square brackets [] mean that the argument enclosed in is optional.
  503. A vertical bar | separates multiple possibilities, choose only one.
  504.  
  505. AddBuffers drive [number_of_buffers]
  506. Assign [logical name:] [directory] [ADD|DEFER|PATH|REMOVE]
  507. Cd [destination]
  508. Copy [-R] [-S] source1 [source2] ... [destination]
  509. Delete [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  510. Delete Device devicename [name [filesystem]]
  511. Dir [-R] [-Q] [source1] [source2] ...
  512. FileNote file|directory comment
  513. HType source
  514. Info
  515. Join [-R] [-S] source1 [source2] ... destination
  516. List [-R] [-Q] [source]
  517. Lock device ON|OFF
  518. MakeDir directory1 [directory2] ...
  519. MakeIcon filename [icontype]
  520. MakeLink linkname filename HARD|SOFT
  521. More source [line count]
  522. Move [-R] [-S] source1 [source2] ... [destination]
  523. Protect [-R] [-S] [file/dir1] [file/dir2] ... [+|-|h|s|p|a|r|w|e|d]
  524. Relabel drive newname
  525. Rename source destination
  526. Resident [command1] [command2] ...
  527. Search file search_string
  528. SetDate file|directory [date/time]
  529. Type source
  530. --------------------------------------------------------------------------
  531. ADDBUFFERS drive number_of_buffers
  532.  
  533. * ADDBUFFERS increases disk access speed on the specified drive by
  534.   adding a number of sector cache buffers. Each additional buffer
  535.   reduces memory by about 560 bytes. Generally, 25-30 buffers per
  536.   floppy drive is optimal.
  537.  
  538. eg.     addbuffers df0: 25
  539.         addbuffers df1: 30
  540. --------------------------------------------------------------------------
  541. ASSIGN [logical name:] [directory] [ADD|REMOVE|DEFER|PATH]
  542.  
  543. * ASSIGN will assign a logical device name to a disk directory.
  544.  
  545. eg.     assign z: df1:zshell_source
  546.   Now if you do a DIR Z: you will get a directory of df1:zshell_source.
  547.   Similarly, the default device names can be reassigned.
  548. eg.     assign libs: df1:libs
  549.  
  550. * Typing ASSIGN with no parameters, will list the current device
  551.   assignments.
  552. eg.     assign
  553.  
  554. * Only for OS2.0+:
  555.  "ASSIGN name: REMOVE" or "ASSIGN name: dir REMOVE" removes that assign
  556.  "ASSIGN name: dir ADD" assigns multiple dirs to name:
  557.  "ASSIGN name: pathname DEFER" will become a normal assign when accessed
  558.   the first time. So you can assign to a path that does not exist yet.
  559.  "ASSIGN name: pathname PATH" assigns to a path. Similar to DEFER, but
  560.   will not converted into a normal assign. If you have "assign bla: df0:
  561.   path" and do "list bla:", you will get the directory of the disk
  562.   inserted NOW (!) in df0:.
  563. --------------------------------------------------------------------------
  564. CD [destination]
  565.  
  566. * Changes the current directory to "destination". If no parameter
  567.   is given, the current directory's name is shown. It is easier to
  568.   change the directory by simply typing its name (without CD).
  569.  
  570. eg.     cd ram:
  571.         ram:t               {same as "cd ram:t"}
  572. --------------------------------------------------------------------------
  573. COPY [-R] [-S] source1 [source2] ... [destination]
  574.  
  575. * COPY copies all source files or files in the source directories to the
  576.   destination directory. If the destination directory does not exist, it
  577.   will be created. If no destination is given (in this case you can specify
  578.   only one source file/dir ofcourse), the current directory will be taken.
  579. * You can use wild cards to specify files.
  580. * The filedate, filecomment and protection-bits are copied with it.
  581. * With Option -R given, subdirectories and the files and
  582.   directories in there are also copied (recursive copying).
  583.   If you have the ALL FLAG set, you can use ALL as last
  584.   argument instead of -R.
  585. * With Option -S given, it sorts. But who needs that ?
  586. Note: Copying will be done in 30KBytes blocks. This should be a good value.
  587.  
  588. eg.     copy c:dir df1:c
  589.         copy dir list type cd df1:c
  590.         copy -r df0:devs df1:devs
  591.         copy -r source:*.s ram:
  592.         copy df0: df1:          {only copy the files in df0: to df1:}
  593.  
  594. * You can also copy a file to a file. This is like copying to a dir and
  595.   then renaming. Date, comment and bits are not copyied with it.
  596. eg      copy df0:fred ram:wilma
  597.   With that you can print a file etc.
  598. eg.     copy file PRT:
  599.         copy CON: barney
  600. --------------------------------------------------------------------------
  601. DELETE [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  602.  
  603. * Deletes one or more files or directories ("source1","source2",...).
  604. * "source" can be a wild card file description.
  605. * If you specify the -r option when deleting a directory,
  606.   then all subdirectories are recursively deleted also. Otherwise (if the -r
  607.   option is not given) only the files in the specified directory are deleted.
  608. * To be safe, delete requests you to really delete a file. You can answer
  609.   with "Y" (yes) if you want this file to be deleted
  610.        "N" (no) if you do not want this file to be deleted
  611.        "A" (all) if you do not want to be asked anymore
  612.        "Q" (quit) if you want to abort deleting.
  613.   To avoid asking, use option -q , but be careful !
  614. * Ever got the problem with thousands of delete-protected files ?
  615.   Solution is simple: Use FORCE as last option.
  616.  
  617. NOTE: "delete libs" (libs is a directory) tries to delete the directory
  618.   "libs", not the files in there ! Use "delete libs/*" for that !
  619.  
  620. WARNING: You can hardly get back what you have deleted !
  621.   So be careful, especially when using the -r option !
  622.   (Try DISKSALV for getting lost files back, DO NOT USE DISCDOCTOR!)
  623.  
  624. eg.     delete fred wilma barney betty dino
  625.         delete df0:devs df1:c df1:data ram:
  626.         delete menu/* force
  627.         delete -r devs:
  628.         delete -r df1:  {better use "delete device df1:"}
  629. --------------------------------------------------------------------------
  630. DELETE DEVICE devicename [name [filesystem]]
  631.  
  632. OS2.0+ only !
  633. * Has the same effect as "FORMAT DRIVE device NAME name QUICK NOICONS".
  634.   devicename is something like DF0: etc., but better not DH0: !
  635.   The name and the filesystem of the disk will be kept the same, except
  636.   you specify new ones. See INFO on how filesystems look like.
  637. eg.: You have an Oldfilesystem- (OFS) disk and want to get a Fastfilesystem-
  638.     (FFS) disk out of it. No need to format the whole disk ! Use
  639.         delete device df0: empty ffs
  640. --------------------------------------------------------------------------
  641. DIR [-Q] [-R] [source1] [source2] ...
  642.  
  643. * Lists the directory of the "source" to the screen. Hitting space
  644.   will pause the listing and backspace will continue it. Files are
  645.   shown with their size in bytes. DIR lists the current directory
  646.   if no parameter is given. If "source" is a filename, then only
  647.   that file is listed. If the option "-q" is not given, the filenames
  648.   will be sorted alphabetically. With the option "-R" given
  649.   it will list recursive.
  650. * All files/dirs with the H-bit (see PROTECT) set, will not be shown.
  651.   All files that are ignored by FILENAMECOMPLETION are also hidden.
  652. * If it is a link, it shows H (for hardlinks) or S (for softlinks) after
  653.   the filesize. See MAKELINK.
  654.  
  655. eg.     dir df0:
  656.         dir -q devs:printers/hp*
  657. --------------------------------------------------------------------------
  658. FILENOTE file|directory comment
  659.  
  660. * FILENOTE creates or changes a comment of the file or directory.
  661.   This comment can be up to 116 characters long and can be displayed
  662.   using the LIST command. It is useful if the filename does not say
  663.   what for this file is. Add a comment to this file and you will
  664.   forever know what this file does.
  665.  
  666. eg.     filenote devs:mountlist "This is used by the mount command"
  667. --------------------------------------------------------------------------
  668. HTYPE source
  669.  
  670. * HTYPE outputs a hex listing of the file specified. Output is the
  671.   same as the M command. SPACE pauses the listing, BACKSPACE
  672.   gets it going again, and CTRL-C will abort the listing.
  673.  
  674. eg.     htype c:list
  675. --------------------------------------------------------------------------
  676. INFO
  677.  
  678. * Lists lots of information about all available volumes (like disks).
  679.   These columns mean:
  680.   NAME: Name of the device containing the volume
  681.   UNIT: Unitnumber, not very interesting
  682.   SYS:  Filesystem, can be one of:
  683.         OFS : Oldfilesystem (old fashioned and slow)
  684.         FFS : Fastfilesystem (needs OS2.0+)
  685.         INO/INF : International OFS/FFS
  686.         DCO/DCF : Directory Cache OFS/FFS (needs OS3.0+)
  687.         MSD : CrossDOS Filesystem (MessyDOS)
  688.         ??? : Unknown
  689.   SIZE: Maximum useable size of the Volume in KBytes (1024 Bytes)
  690.   FREE: Free/useable size in KBytes
  691.   FULL: Ratio between used size and maximum size
  692.   BLOCK: Size of a single block in Bytes
  693.   STATUS: Says if it is possible to write to that volume
  694.   ERR:  Number of soft errors, I only saw 0 yet
  695.   VOLUME: Name of the volume (name of the disk).
  696. * Note: It would not make sense to show the free size in Bytes,
  697.   because space can only be allocated in whole blocks and one
  698.   block is at least 488 Bytes large.
  699.  
  700. eg.     info
  701. --------------------------------------------------------------------------
  702. JOIN [-R] [-S] [sourcefile1] [sourcefile2] ... destfile
  703.  
  704. * JOIN concatenates one or more files to form a new file (destfile).
  705. wild cards are supported.
  706. * See  COPY for more.
  707.  
  708. eg.     join fred.doc roy.doc dog.doc mydocs.doc
  709. --------------------------------------------------------------------------
  710. LIST [-R] [-Q] [source]
  711.  
  712. * Lists the directory of the "source" to the screen. Hitting space
  713.   will pause the listing and backspace will continue it.
  714. * LIST acts similar to DIR, but outputs more information:
  715.   - Hidden files will be shown
  716.   - Shows the date and time of the last change. See DATE.
  717.   - Shows the protection-bits. See PROTECT.
  718.   - If available, the comment will be shown. See FILENOTE.
  719.   - If it is a link, it shows where it is linked to. See MAKELINK.
  720.     (Note:softlinks are resolved by ReadLink(), hardlinks by simply Lock())
  721. * LIST supports recursive listing. That means the contents of all
  722.   subdirectories are shown. To use it, specify the -r option.
  723. * With the -q option given, it does not sort nor print
  724.   comments and links.
  725.  
  726. eg.     list
  727.         list sys:system
  728.         list -q df0:
  729.         list -r -q *.info    {show all INFO-files in the current and
  730.                               in the sub-directories}
  731.         list -r ram:~*.info  {show all except *.info files in RAM:}
  732. --------------------------------------------------------------------------
  733. LOCK device ON|OFF
  734.  
  735. * "LOCK device ON" locks the write-access to a device
  736. eg.     lock df0: on
  737.   will make it impossible to write to or change something on the
  738.   disk inserted in DF0:
  739. * "LOCK device OFF" makes write-access to a device possible again.
  740.  
  741. eg.     lock dh0: on
  742.         lock dh0: off
  743. --------------------------------------------------------------------------
  744. MAKEDIR [directory1] [directory2] ...
  745.  
  746. * Creates one or more directories of the names specified.
  747.  
  748. eg.     makedir temp
  749.         makedir c l s libs devs fonts
  750.         makedir devs/printers ram:c
  751. --------------------------------------------------------------------------
  752. MAKEICON filename [icontype]
  753.  
  754. OS2.0+ only !
  755. * Makeicon creates a default icon for the file "filename". "icontype" can
  756.   be one of: DISK, DRAWER, TOOL, PROJECT, GARBAGE, DEVICE, KICK or APPICON
  757.   "filename" is without appending .info.
  758.   Note that DEVICE and APPICON will not be available on most systems.
  759. * OS3.0+ only: Makeicon without icontype pops up the information-window
  760.   of Workbench.
  761.  
  762. eg.     makeicon barney tool
  763.         makeicon sys:libs drawer  {"makeicon libs: drawer" will not work}
  764.         makeicon sys:system/format
  765. --------------------------------------------------------------------------
  766. MAKELINK linkname filename HARD|SOFT
  767.  
  768. OS2.0+ only !
  769. * Makelink creates a Hardlink or Softlink to the file or directory
  770.   "filename". "linkname" must be a filename, that does not exist yet.
  771.   You can use links like the file/directory itself, but they need nearly
  772.   no additional diskspace. In most cases you would use Hardlinks.
  773. * If you delete a file a Hardlink is linked to, the Hardlink will become
  774.   the file itself. Hardlinks cannnot work accross devices, use Softlinks
  775.   for that. (Hardlinks are resolved by the filesystem)
  776. * Softlinks are links to a path, that is checked every time when accessed,
  777.   so a link to DF0: depends on the disk inserted in DF0: .
  778.   (Softlinks are resolved by AmigaDOS)
  779.   I wonder why Softlinks are not supported by the commands in the C:
  780.   directory even of Workbench 3.0 ? A bit old fashioned !
  781.  
  782. eg.     makelink muchmore ppmore hard
  783.         makelink sys:commands c: hard
  784.         makelink readme df0:readme soft  {so with "more readme" you will
  785.     see the readme-file on the disk currently inserted into DF0: }
  786. --------------------------------------------------------------------------
  787. MORE source [line count]
  788.  
  789. * MORE acts as a simple (ANSI) text file viewer. By default, it will
  790.   show some lines of a text file, then wait for some user input.
  791.  
  792.  *After pressing "H" you get some Help information.
  793.  *To move around in the text, you can use the CURSOR-KEYS:
  794.     UP        : Go one line up
  795.     DOWN      : Go one line down
  796.     LEFT      : Go one page up
  797.     RIGHT     : Go one page down
  798.     SHIFT-UP  : Go to the top of the text
  799.     SHIFT-DOWN: Go to the bottom of the text
  800.  *SPACE does the same as SHIFT-DOWN, BACKSPACE the same as SHIFT-UP.
  801.   You can also use the keys 1,2,3,7,8 and 9 of your numeric keypad.
  802.  *The key "S" will prompt you what to Search for. If you just press
  803.   RETURN, then the last item will be searched for. Searching begins
  804.   at the second top line shown. If the item is found, the line, it
  805.   is in, is displayed as the first line.
  806.  *The key "W" Writes the text to a file. If you enter PRT: as filename,
  807.   the text is send to the printer. Press just RETURN to cancel.
  808.  *Press "J" to Jump to a special position.
  809.  *Press "R" after you have Resized the window.
  810.  *Typing any other key will abort you back to the shell.
  811.  
  812. eg.     more readme
  813.  
  814. * Specifying the optional line count will allow you to show more or
  815.   less than the default number of lines, that will fit exactly on the
  816.   window. Useful when using FLAGS CUT OFF.
  817.  
  818. eg.     more contents 12
  819.         more super.doc 25
  820. --------------------------------------------------------------------------
  821. MOVE [-R] [-S] source1 [source2] ... [destination]
  822.  
  823. * This is very similar to the copy-command, but all files/directories
  824.   copyied will be deleted afterwards. If an error happens, the source will
  825.   not be deleted. If it was OK, you will see "... copyied"
  826. * If source and destination are on the same device it uses rename
  827.   instead. This is quicker and needs less disk accesses. Then you will
  828.   see "...moved".
  829. * Note the difference between "move dir" and "move dir/*".
  830.  
  831. eg.     move ram:a ram:b
  832.         move -r df0:* df1:
  833.         move c:mount devs:
  834. --------------------------------------------------------------------------
  835. PROTECT [-R] [-S] filename1 [filename2] ... [+|-|h|s|p|a|r|w|e|d]
  836.  
  837. * Allows you to alter/see the protection bits associated with a file
  838.   or a directory. To see it, you can also use LIST.
  839.   You can use wild cards to process multiple files.
  840. * See COPY  how to use -r and -s.
  841. * PROTECT filename +bits_to_set -bits_to_clear
  842.   Sets all bits_to_set and resets all bits_to_clear.
  843.   You can give one + or one - or both or both not.
  844.  
  845. eg.     protect game +hp -rwd
  846.         protect monitor +hsparwed
  847.         protect -r df0:* -d
  848.  
  849. Bits:   "h"     hidden  V1.3
  850.         "s"     script  V1.3
  851.         "p"     pure    V1.3
  852.         "a"     archive V1.3 -> is reset when file is changed
  853.         "r"     readable
  854.         "w"     writable
  855.         "e"     executable -> will be checked before executing
  856.         "d"     deletable
  857. --------------------------------------------------------------------------
  858. RELABEL drive newname
  859.  
  860. * RELABEL renames the disk specified with the newname given.
  861.  
  862. eg.     relabel Empty: MY_DISK
  863.         relabel df0: FISHMONGER
  864. --------------------------------------------------------------------------
  865. RENAME source destination
  866.  
  867. * Renames the file or directory of name "source" to that of
  868.   "destination". You can use this to move files on a disk.
  869.  
  870. eg.     rename df0:c/list df0:ls        {moves and renames}
  871.         rename ed Editor                {just renames}
  872. --------------------------------------------------------------------------
  873. RESIDENT [command1] [command2] ...
  874.  
  875. * RESIDENT allows you load commands into memory, such that they
  876.   will execute immediately, rather than be loaded from disk all the
  877.   time. The benefit of RESIDENT over saving commands on the RAM:
  878.   disk is that only one copy of the command is in memory all the
  879.   time. RAM: based commands will use up twice as much memory when
  880.   the command is being executed.
  881.  
  882. * The limitation of RESIDENT is that only certain commands will
  883.   work. Generally, all commands which have their PURE bit (see
  884.   PROTECT) set can be made RESIDENTABLE. However, RESIDENT
  885.   does not check whether the PURE bit is set before loading, and
  886.   hence you can try out commands to see if they work. They'll
  887.   always work the first time. Its only when executing the 2nd
  888.   time that the Amiga will likely crash.
  889.   Note: Crunched programs will most likely not work.
  890.  
  891. * Typing RESIDENT with no parameters will show the current list
  892.   of resident commands:
  893.     ADRESS is useful for programmers
  894.     USECOUNT says how many times it is used right now
  895.              ROM internal residents have negative values
  896.     NAME means the name  (hard to guess :)
  897.  
  898. * Typing one or more command names after RESIDENT will make those
  899.   commands resident. ZShell will search the command search path
  900.   to try and find them.
  901.  
  902. eg.     resident c/list c/cd c/date c/avail
  903.         resident ed
  904. --------------------------------------------------------------------------
  905. SEARCH file search_string
  906.  
  907. * SEARCH searches for the search_string in the file. The file can
  908.   be a binary (eg. executable) or a text. Each occurance
  909.   will be printed on the window with highlighted search_string.
  910.   If the file is a text, the whole line will be printed.
  911.   If it is a binary file, it will be printed from the occurance
  912.   to the next NULL or LF.
  913. * Searching is case independent (of course!).
  914. * To search for a string at the beginning of a line (textfile only)
  915.   put a point (.) before the search_string.
  916.  
  917. eg.     search zshell.doc "binary (eg."
  918.         search s:startup-sequence .assign
  919.           {show all assigns, but not "resident assign"}
  920.         search c:mount $ver:    {show version number and date,
  921.                             should work with all newer executables}
  922. --------------------------------------------------------------------------
  923. SETDATE file|directory [date/time]
  924.  
  925. * SETDATE changes the date-of-last-change (DOLC) of a file or directory.
  926.   The DOLC can be shown by simply listing this file with LIST.
  927. * SETDATE with no date/time given sets the DOLC to the systemtime
  928.   (see DATE,SETCLOCK).
  929. * If you want to set the DOLC to a special date you have to specify
  930.   the date or time or both in a format described at DATE.
  931.  
  932. eg.     setdate ram:newthings
  933.         setdate devs:mountlist 21.8.71      {very old}
  934.         setdate murks 18:24:12 12-24-96     {future}
  935. --------------------------------------------------------------------------
  936. TYPE source
  937.  
  938. * Prints to the screen the ASCII/ANSI text file specified as "source".
  939.   Hitting any key will pause the listing. Backspace will restart it.
  940.   CTRL-C will abort the listing.
  941. * Use MORE instead of TYPE, if possible.
  942.  
  943. eg.     type readme
  944. --------------------------------------------------------------------------
  945.  
  946.  
  947. --------------------------------------------------------------------------
  948. Builtin Commands for Scripts and Controlling
  949.  
  950. Following there are descriptions of the other commands which are
  951. builtin in ZShell (and therefore need not be loaded from disk).
  952. Square brackets [] mean that the argument enclosed in is optional.
  953. A vertical bar | separates multiple possibilities, choose only one.
  954.  
  955. Alias [variable] [definition]
  956. Ask [question]
  957. Avail [-C]
  958. Border ON|OFF [number]
  959. Cls
  960. Date [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  961. Echo [string]
  962. Else
  963. EndCLI [-C]
  964. EndIf
  965. Eval expression
  966. Execute source
  967. FailAt [failat_level]
  968. Fault [error_number]
  969. Flags [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL] [ON|OFF]
  970. Help [topic]
  971. If [NOT][WARN][ERROR][FAIL][EXISTS file]
  972. Lab label
  973. MemClk ON|OFF|ALARM
  974. NewCLI [-Wnew_window] [-Sstart_script] [-Ccommand]
  975. Path [-C] [path1] [path2] [path3] ...
  976. Prompt [string]
  977. Quit [error_code]
  978. Review [bytesize|S|C]
  979. Run [-C] commandline
  980. SetClock LOAD|SAVE
  981. Skip label
  982. Stack [size]
  983. UnAlias [alias1] [alias2] [alias3] ...
  984. Wait timeout
  985. Comments
  986. --------------------------------------------------------------------------
  987. ALIAS [variable] [definition]
  988.  
  989. * ALIAS assigns a variable name to a definition. The variable name
  990.   can be up to 15 characters long, and the definition can be up to
  991.   about 360 characters long.
  992.  
  993. * Typing ALIAS with no parameters at all, will generate a list of all
  994.   current alias definitions.
  995.   eg.   alias
  996.  
  997. * Aliasing of Function Keys
  998.   eg.   alias f1 ed df0:s/startup-sequence^M
  999.   This example assigns the unshifted F1 key to "ed df0:s/startup-sequence"
  1000.   with following return. Note that the ^M characters puts an auto
  1001.   carriage return in the definition.
  1002.   eg.   alias F10 cd df0:^M
  1003.   This sets shifted F10 to "cd df0:<CR>".
  1004.   You can use quotes to make it look better:
  1005.         alias f2 "cd df1:^M"
  1006.         alias f4 "genim2 "
  1007.         alias F9 "scribble df0:text/"
  1008.   If you want to use a semicolon in the alias, you need to use quotes:
  1009.         alias f1 "a68k z.a;blink z.o to z^M"
  1010.   or leave away the quotes and use a backslash before the semicolon:
  1011.         alias f1 a68k z.a\;blink z.o to z^M
  1012.  
  1013. * Aliasing of commands
  1014.   eg.   alias mv rename
  1015.   This allows an alternate name for rename. i.e. mv.
  1016.   So you could type
  1017.         mv oldname newname      {to rename oldname to newname}
  1018.  
  1019.   eg.   alias as a68k
  1020.         alias pp powerpacker
  1021.         alias go "a68k zsh.s;blink zsh.o to zsh"
  1022.         alias cped copy df0:c/ed
  1023.   You would use this last alias, if you need to copy a particular
  1024.   file a lot. So, to copy c/ed to ram: use:
  1025.         cped ram:
  1026.  
  1027. * You can also pass external parameters to an alias.
  1028.   eg.   alias al "%1 a68k $1.s;blink $1.o to $1"
  1029.   Typing
  1030.         al test
  1031.   will assemble test.s using a68k, then blink test.o to become test.
  1032.  
  1033. You can specify upto eight parameters to pass to a command alias.
  1034. At the start of the alias definition, specify the parameters to pass
  1035. with the variables %0 thru %7. These need not be in sequence. The
  1036. first %n will be assigned to the first parameter, the 2nd %n to
  1037. the 2nd parameter etc.
  1038. Insert the corresponding variables $0 thru $7 at the points in the
  1039. alias definition where that parameter is to appear.
  1040. eg.     alias disp %1 %2 %3 echo "$3 $2 $1"      {is the same as: }
  1041.         alias disp "%1 %2 %3 echo "$3 $2 $1""    {note the quotes}
  1042.         alias cram %0 %1 %2 %3 copy $0 $1 $2 $3 ram:
  1043.         alias go %5 %1 %6 %2 echo "1st-$5 2nd-$1 3rd-$6 4th-$2"
  1044.  
  1045. * Command aliases can be nested to 1 level.
  1046.   eg.   alias clear echo ^L\;alias cdir "%1 clear;cd $1;dir"
  1047.  
  1048. * An important point about aliases, is that you can redefine the
  1049.   existing internal command names.
  1050.   eg.   alias help "type help_screen"
  1051.   This would make it so that pressing HELP or typing H E L P would
  1052.   not generate the standard help command list, but would type the
  1053.   file called  help_screen to the screen. Similarly
  1054.   eg.   alias copy c:copy       {replace copy by disk-based copy}
  1055.         alias info c:dfree
  1056.         alias list .list        {replace list by disk-based list}
  1057.  
  1058. * See UNALIAS for how to remove alias definitions.
  1059. --------------------------------------------------------------------------
  1060. ASK [question]
  1061.  
  1062. * ASK prompts the user with a question requiring a Yes or No
  1063.   answer. If the first letter of the users response is "Y", ASK
  1064.   returns code WARN. Responding "E" returns ERROR, "F" returns
  1065.   FAIL. Any other letter will result in return code OK.
  1066.   The question can include ASCII characters as well as control
  1067.   codes as per the ECHO command.
  1068.  
  1069. eg.     ask "Do you want commands copied to ram? "
  1070.         if warn
  1071.                copy c: ram:
  1072.         endif
  1073.  
  1074. Note: You can redirect the ANSWER to a file by redirecting the OUTPUT.
  1075. eg.     ask >ENV:CallIt        {The answer is written to CallIt}
  1076. --------------------------------------------------------------------------
  1077. AVAIL [-C]
  1078.  
  1079. * AVAIL shows the available memory as:
  1080.   1.Total chip memory free,
  1081.   2.Total fast memory free,
  1082.   3.Total memory free.
  1083.  
  1084. * With option "-c" given, it tries to free unused memory
  1085.   (remove unused libraries, devices and the help manual)
  1086.  
  1087. eg.     avail
  1088.         avail -c
  1089. --------------------------------------------------------------------------
  1090. BORDER ON|OFF [number]
  1091.  
  1092. * Switches the border of the window on or off. If the border is off
  1093.   there will fit some more characters in a line; this can be useful
  1094.   when viewing texts with MORE.
  1095. * If you run OS1.3-, you should do a CLS or "echo ^L" after
  1096.   using BORDER OFF.
  1097. * If you specify a number after ON or OFF, the window is resized as
  1098.   large as possible. The number means the wanted distance of the
  1099.   window top to the screen top in pixels. By specifying a negative
  1100.   value the window will just not hide the screens menu bar.
  1101.  
  1102. eg.     border off
  1103.         border on 0         {fills full screen}
  1104.         border off -1       {does not hide the menu bar}
  1105.         border on 10;cls    {with OS1.3-}
  1106. --------------------------------------------------------------------------
  1107. CLS
  1108.  
  1109. * CLS clears the window.
  1110.   It also resets the consolehandler, so if you see lots of funny
  1111.   characters on the window, try CLS.
  1112. * You can do the same by using "echo ^[c".
  1113. * CTRL L only clears the window (same as "echo ^L").
  1114.  
  1115. eg.     cls
  1116. --------------------------------------------------------------------------
  1117. DATE [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  1118.  
  1119. * DATE without arguments shows the actual date and time (systemtime).
  1120. * You can specify one or two arguments to set date or time or both.
  1121.   The time format must be in HOUR:MINUTE:SECOND . Do not forget the
  1122.   colon (:) between. Give only one or two digit numbers.
  1123.   There exists two formats for setting the date. First is
  1124.   DAY.MONTH.YEAR . Second is MONTH-DAY-YEAR . Use only one or two
  1125.   digit numbers.
  1126.  
  1127. eg.     date
  1128.         date 14:15:00         {quarter past two PM}
  1129.         date 12.5.94          {12th of May in 1994}
  1130.         date 3-30-88 8:12:45  {30th of March in 1988 in the morning}
  1131. --------------------------------------------------------------------------
  1132. ECHO [string]
  1133.  
  1134. * Prints the "string" to the screen. If you want spaces in the
  1135.   string, make sure the whole string is enclosed in quotes. If you
  1136.   want to print special control characters (eg. ctrl-L clear screen)
  1137.   then prefix the control letter with a ^ character. If you want to
  1138.   print double quotes, then use the \ character before the qoutes.
  1139.   If you want to print some special characters like the CSI ($9B),
  1140.   you can put a (hexa-)decimal number after the ^ character; you can
  1141.   separate it from the next character by a point (.) . Do not forget
  1142.   the ^J at the end of a line.
  1143.  
  1144. eg.     echo hello^J
  1145.         echo "Hello world !"
  1146.         echo Hello world !
  1147.         echo "^Lthe screen was just cleared^J"
  1148.         echo "^Lline 1^Jline 2^Jline 3^J"
  1149.         echo "these are double quotes ->\"^J"
  1150.         echo ^*33mColor^*32mful^J
  1151.         echo ^*4mUnderlined^*0mNormal^J
  1152.  
  1153. * Some common control codes are:
  1154.   ^7    ^G      bell (makes a DisplayBeep)
  1155.   ^10   ^J      linefeed.
  1156.   ^12   ^L      clear screen.
  1157.   ^13   ^M      carriage return.
  1158.   ^24   ^X      clear line.
  1159.   ^27   ^[      escape.
  1160.   ^$9b  ^*      CSI (command sequence introducer).
  1161. --------------------------------------------------------------------------
  1162. ELSE
  1163.  
  1164. * ELSE marks the middle of an IF statement. All statements
  1165.   following it, and before the ENDIF statement will be executed
  1166.   only if the IF condition is FALSE. See IF for usage.
  1167. --------------------------------------------------------------------------
  1168. ENDCLI [-C]
  1169.  
  1170. * Exits you from ZShell back to the AmigaDOS CLI prompt or Workbench.
  1171. * If the option "-c" was specified, it will clear ZShell as a
  1172.   resident: only in low memory situations needed.
  1173. * Instead of using ENDCLI you can simply press the ESC key or click
  1174.   on the close gadget, if available.
  1175.  
  1176. eg.   endcli
  1177.       endcli -c
  1178. --------------------------------------------------------------------------
  1179. ENDIF
  1180.  
  1181. * ENDIF marks the end of an IF statement. See IF for usage.
  1182. --------------------------------------------------------------------------
  1183. EVAL expression
  1184.  
  1185. * EVAL evaluates the "expression" as a reverse polish expression,
  1186.   and displays the answer in decimal and hex notation. Reverse
  1187.   Polish Notation (RPN) is used in Forth and in Hewlett Packard
  1188.   calculators (the best calculators in the world). It is based on
  1189.   how arithmetic is actually done at the lowest possible level.
  1190.   RPN allows calculating complex expressions without using brackets.
  1191.  
  1192. eg.     eval 4 5 +
  1193.   This gives the answer 9. When a number is found, it is "pushed"
  1194.   onto the arithmetic stack. The + always adds the last two numbers
  1195.   on the stack.
  1196.  
  1197. eg.     eval 7 2 3 + -
  1198.   This gives the answer 2. It is the same as (7 - (2 + 3)). See,
  1199.   7 is first pushed onto the stack, followed by 2, then 3. The +
  1200.   adds together the 2 and 3 and leaves the result 5 on the stack.
  1201.   Which means that the number 7 followed by 5 are left on the
  1202.   stack. The - subtracts the last entry (5) on the stack from the
  1203.   one before it (7), leaving the result 2.
  1204.  
  1205. eg.     12 * (3 + 9)                    > eval 12 3 9 + *
  1206.         (15 - 4) * (6 + 18)             > eval 15 4 - 6 18 + *
  1207.         (6 * ((87 + 13) / (2 * 25)))    > eval 6 87 13 + 2 25 * / *
  1208.  
  1209. * EVAL only performs 32 bit integer arithmetic.
  1210.   Negative numbers are prefixed with - .(hexadecimal they are
  1211.   shown as a 31 bit integer with bit 32 set, as usual)
  1212.   Prefixing positive numbers with + is optional.
  1213.  
  1214. eg.     eval +5 -3 +    {results in 2  hex:$00000002}
  1215.         eval -5 3 +     {results in -2 hex:$fffffffe}
  1216.  
  1217. * EVAL supports decimal, hexadecimal and binary  numbers.
  1218.   If you prefix the number with $, the number is hex
  1219.   If you prefix the number with %, it is binary.
  1220. Programmers: For BPTR-APTR conversion you can use & to specify
  1221.   a hexadecimal APTR when asked for a BPTR and vice versa with Â§.
  1222. eg.     eval $c00000 $a0 16 * +
  1223.  
  1224. * EVAL can also be used to perform base conversions (to dec or hex)
  1225. eg.     eval $ca
  1226.         eval %10110001
  1227.         eval 45
  1228.         eval &5a8
  1229.  
  1230. * The operators + - * / & | @ ! are supported.
  1231.   The & allows logical AND'ing. And | allows logical OR'ing.
  1232.   The @ is similar to PEEK in BASIC.
  1233.   Conversely, ! is similar to POKE in BASIC
  1234. eg.     eval $80 $21 $08 | | $aa &
  1235.         eval $67 %11001011 &
  1236.  
  1237.         eval $c00000 @
  1238.   This prints out the long word in memory locations $c00000 - $c00003.
  1239.  
  1240.         eval $aa55aa55aa $40000 !
  1241.   This pokes the long word $aa55aa55aa into locations $40000 thru $40003.
  1242.  
  1243. * For environment handling you can specify the value of an
  1244.   environment variable with | followed by the name.
  1245.   To store the result in a variable, redirect the output.
  1246.  
  1247. eg.     eval >ENV:aa |ENV:bb 1 +
  1248.   This adds 1 to the value in ENV:bb and stores the result in ENV:aa
  1249. * If the result was 0 an error (fail-level 10) will be returned.
  1250.   If it was negative, a warn (5) returns. (Not when redirecting output)
  1251. --------------------------------------------------------------------------
  1252. EXECUTE source
  1253.  
  1254. * Executes the ZShell script file of name "source". All ZShell
  1255.   commands, as well as commands from disk are valid within a
  1256.   script file.
  1257. * If the S-protection-bit (see PROTECT) of "source" is set, you do
  1258.   not need to type EXECUTE, just use "source" like a command.
  1259. * You can break scripts by pressing CTRL-D.
  1260.  
  1261. eg.   execute install_hard_disk
  1262. --------------------------------------------------------------------------
  1263. FAILAT [failat_level]
  1264.  
  1265. * FAILAT sets the error code level at which scripts (and multiple
  1266.   commands on one line) will be aborted. The default level is 10.
  1267.   Most commands return 10 as an error, (20 for serious errors)
  1268.   while compilers returning Warning type errors will return 5.
  1269.   Hence, the default of 10 will allow Warnings to occur without
  1270.   the script (or line) being aborted. If a command returned an error
  1271.   code higher than the failat level, it will be printed out on the
  1272.   window.
  1273.  
  1274. eg.     failat 20       {sets failat level to 20}
  1275.  
  1276. * If you do not specify a failat level, the current setting is
  1277.   shown.
  1278.  
  1279. eg.     failat
  1280. --------------------------------------------------------------------------
  1281. FAULT [error_number]
  1282.  
  1283. * FAULT displays a textual error message of the given DOS-error-number
  1284.  
  1285. eg.     fault 103
  1286.   (says something like "no free store", go and buy some extra memory :-)
  1287. --------------------------------------------------------------------------
  1288. FLAGS [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL] [ON|OFF]
  1289.  
  1290. * With this you can configure some things. Use FLAGS without arguments
  1291.   to see the current settings. The meaning of the keywords are:
  1292.  
  1293. CHECK: (default off) Activates or deactivates the programmers status line.
  1294.   The status line (if activated) will only appear once a disk based
  1295.   or resident program has been executed. The line appears as follows:
  1296.   Result2: 0  time = 00:00:23.66  changes-> chip: 0  fast: 0  total: 0
  1297.   Result2 shows the error code that can be asked for with IoErr.
  1298.   Time shows how long the program took to execute in hours,
  1299.   minutes, seconds, hundredths (This time does NOT include the time
  1300.   it takes to load the program from disk). Changes show if the program
  1301.   has left any memory still allocated. i.e. if 200 bytes of chip
  1302.   memory were left allocated by the program, then you see "chip: -200".
  1303.   The Return code (the program returns in D0) is shown as Fail-Level.
  1304.  
  1305. MATCH: By default Filenamecompletion shows all files that matches
  1306.   the given pattern. You can switch this off by using "FLAGS MATCH OFF".
  1307.  
  1308. ICON: (default off, OS2.0+) This enables iconifying when pressing ESCAPE
  1309.   or clicking the Close-Gadget. To exit from ZShell use ENDCLI.
  1310.   You need Workbench running and ZShell must have opened its own window
  1311.   (start from Workbench, start with newcli or used -W when started from
  1312.   CLI).  When iconifying, a icon is created on the Workbench and the
  1313.   window is closed. Double-clicking on this icon or dragging a file into
  1314.   it pops ZShell up again. Use the ToolTypes "ICONNAME", "XPOS" and
  1315.   "YPOS" to determine the name and position of the icon.
  1316.   ToolType "ICONIFY" lets ZShell start in iconifyed mode.
  1317.  
  1318. WILD: (default off, OS2.0+) By enabling this, you force ZShell to use
  1319.   AmigaDOS wildcard-patternmatching instead of the internal matcher. Use
  1320.   this if you like #? rather than * or if you need multiple * in one name.
  1321.  
  1322. ERRORS: (default on) Most external commands show their errormessages
  1323.   themselves, so you often see double error messages. Using ERRORS you can
  1324.   switch off this behaviour, but you risk to miss some errormessages !
  1325.   If you see a large errornumber, this command assumed that there will be
  1326.   no error-output and does not set the correct errorcode --- this is
  1327.   badly programmed !
  1328.  
  1329. DEBUG: (default off) This is for testing/debugging script-files. Switching
  1330.   DEBUG to ON, the commands from the script appear on the window as they
  1331.   are processed (you need to execute the script for that, ofcourse),
  1332.   and redirection will be ignored (so you will see even output to >NIL: ).
  1333.  
  1334. CUT: (default on) For MORE. If ON, lines longer than the window will be
  1335.   cutted at the end. If OFF, too long lines will wrapped to next line.
  1336.  
  1337. ALL: (default on) Enables the substitute ALL for the option -R.
  1338.   Note that -R must be the first argument (or second after -Q) and ALL
  1339.   must be the last argument.
  1340.   (Only in this release you can place ALL anywhere you like)
  1341.  
  1342. eg.     flags icon on all off
  1343.         flags cut off all off check on
  1344. --------------------------------------------------------------------------
  1345. HELP [topic]
  1346.  
  1347. * HELP shows the lines of this manual corresponding to the topic.
  1348.   To see all topics available, type "HELP CONTENTS" . Make sure that
  1349.   the manual "ZShell.doc" is in the current directory or in S: !
  1350.   For some help about a command you can also type "commandname ?" .
  1351.   Type only "?" to read the manual with MORE.
  1352. Note: Instead of typing the topic you can type just some starting
  1353.       characters.
  1354. Note: The manual is only loaded once and will stay in memory till
  1355.       you use AVAIL -C or ENDCLI -C
  1356.  
  1357. eg.    help contents       {"help cont" will do the same}
  1358.        help copy
  1359.        makedir ?
  1360.        ?
  1361.  
  1362. * HELP without a topic lists the names of all available ZShell
  1363.   commands to the screen. This does not need the manual.
  1364.   HELP can also be invoked by hitting the HELP key.
  1365.  
  1366. eg.   help
  1367. --------------------------------------------------------------------------
  1368. IF [NOT][WARN][ERROR][FAIL][EXISTS file]
  1369.  
  1370. * The IF command allows conditional execution of statements
  1371.   following it.
  1372. * If the condition specified is true, then execution continues
  1373.   after the IF statement until either an ENDIF or ELSE statement
  1374.   is encountered. If it is an ELSE statement, then all statements
  1375.   between the ELSE and the closing ENDIF are skipped.
  1376. * If the condition is false, then all statements after the IF and
  1377.   before either an ENDIF or ELSE statement are skipped. If an ELSE
  1378.   is encountered, then execution continues for all statements after
  1379.   the ELSE and before the closing ENDIF.
  1380. * IF can examine the state of the return code from the last command
  1381.   execute with WARN, ERROR, and FAIL tests. You can test for the
  1382.   non existence of such a state by including the optional NOT
  1383.   parameter.
  1384.  
  1385. eg.     IF WARN
  1386.            echo "last command returned warnings"
  1387.         ELSE
  1388.            echo "last command did not return warnings"
  1389.         ENDIF
  1390.  
  1391.         IF NOT FAIL
  1392.            echo "last command did not fail"
  1393.         ENDIF
  1394.  
  1395. * IF can also test for the existence of a file or directory.
  1396.  
  1397. eg.     IF EXISTS :system/format
  1398.            echo "this disk has a format command"
  1399.            echo "you can look yourself. I'm not joking"
  1400.         ENDIF
  1401.  
  1402.         IF NOT EXISTS ram:ed
  1403.            copy c:ed ram:
  1404.         ENDIF
  1405. --------------------------------------------------------------------------
  1406. LAB label
  1407.  
  1408. * LAB specifies a destination (label) for the SKIP command.
  1409. --------------------------------------------------------------------------
  1410. MEMCLK ON|OFF|ALARM
  1411.  
  1412. * MEMCLK is for using a clock shown in the border of the actual
  1413.   window. The current total free and chip free memory are also
  1414.   shown. It can do a DisplayBeep (short flash on all screens) at a
  1415.   specified time. The DisplayBeep can be converted into a sound
  1416.   by using a PD-utility for that or using Workbench 2.1+ .
  1417. * Programmers: There will be only one "MemClock"-Task, even if you
  1418.   run MEMCLK on many windows  -> memory and CPU saving.
  1419. * MEMCLK ON switches the clock on or does nothing if it already
  1420.   exist.
  1421. * MEMCLK OFF switches the clock off or does nothing if it does not
  1422.   exist.
  1423. * MEMCLK ALARM shows the alarm time. If you type a time (see DATE)
  1424.   after ALARM, you set the alarm time. (You cannot set an alarm date
  1425.   or multiple times.) ( MEMCLK A is the same as MEMCLK ALARM )
  1426.  
  1427. eg.     memclk on
  1428.         memclk off
  1429.         memclk alarm
  1430.         memclk a 21:34:07
  1431.  
  1432. * The clock can also be used on non-ZShell windows, but MAKE SURE
  1433.   that the clock is switched OFF BEFORE the window is CLOSED,
  1434.   otherwise you will see THE GURU (or an ALERT with OS2.0+)
  1435.   For example, to get a clock on the Workbench, type in ZShell
  1436.         wait 5;memclk on
  1437.   and press RETURN. Now you have 5 seconds to click on the Workbench
  1438.   screen. For removing use "wait 5;memclk off" .
  1439. --------------------------------------------------------------------------
  1440. NEWCLI [-Wnew_window] [-Sstart_script] [-Ccommand]
  1441.  
  1442. * NEWCLI without arguments starts a new ZShell process.
  1443.   Things like paths, aliases and history buffer (!) will be copied to
  1444.   the new ZShell. The input/output window is created with the default
  1445.   specification. The startup script will be S:ZStart.
  1446. * "NEWCLI -Wnew_window" is used for opening a window with different
  1447.   specifications than the default. If you specify just "-W",
  1448.   there will be no window and output will be send to NIL: ; if there
  1449.   is input necessary, the ZShell process will just end (for
  1450.   example at a end of a script).
  1451. * "NEWCLI -Sstart_script" is used if the name of the startup script
  1452.   should be different from S:ZStart. If you specify just "-S", no
  1453.   script will executed.
  1454. * "NEWCLI -Ccommand" executes the command when starting. No script
  1455.   will be executed.
  1456.  
  1457. eg.     newcli
  1458.         newcli -wcon:30/30/400/50/Shell
  1459.         newcli -wcon:50/20/500/100/Hello -ss:shell-startup
  1460.         newcli -sram:doassigns -w
  1461.         newcli "-wcon:30/30/400/50/Great Shell" "-cecho Welcome !"
  1462. --------------------------------------------------------------------------
  1463. PATH [-C] [path1] [path2] [path3] ...
  1464.  
  1465. * PATH defines the command search path used by ZShell when searching
  1466.   for disk based commands (see EXECUTING COMMANDS) .
  1467.   If you give the "-c" option, the old search path will be cleared
  1468.   and the new search path consist only of the given paths.
  1469.  
  1470. eg.     path -c c: ram:c df0: df1:
  1471.   This example will make it so that if you type a command which is
  1472.   not internal in ZShell, the resident list will be searched for it,
  1473.   then the current directory, then the c: directory, then the ram:c
  1474.   directory, then df0:, and finally df1:
  1475.  
  1476. * By omitting the -c option, you can add a number of paths onto the
  1477.   existing command search path.
  1478. eg.     path df2:c
  1479.         path df1:bin df1:myprogs
  1480.  
  1481. * If, however, you type path with no parameters, the current search
  1482.   path will be displayed. The C: at the end of this list is no real
  1483.   path, but commands will be searched there if they could not be found
  1484.   anywhere else.
  1485.  
  1486. * When starting ZShell the paths of Workbench (if available) will be
  1487.   copied.
  1488. --------------------------------------------------------------------------
  1489. PROMPT [string]
  1490.  
  1491. * If no parameter is typed, the current prompt setting will be shown.
  1492.  
  1493. eg.     prompt
  1494.  
  1495. * If a prompt string is specified, the current prompt setting
  1496.   will be changed to that string. The character "%" specifies a
  1497.   special prompt option:
  1498.     %p      Insert whole path of current directory.
  1499.     %s      Insert last part of the path of current directory.
  1500.     %n      Insert CLI number
  1501.     %l      Insert current input line number (for fun!)
  1502.     %c      Insert last command (for even more fun ! :-)
  1503. * You can use control sequences like in the ECHO command.
  1504.  
  1505. eg.     prompt "%s> "     {default prompt. Show current directory + ">"}
  1506.         prompt "%n.%p> "  {show CLI number, then current dir, then ">"}
  1507.         prompt Hello!     {shows "Hello!" at the start of every line}
  1508.         prompt %p^J^*32m> {Just try it!}
  1509. --------------------------------------------------------------------------
  1510. QUIT [error_code]
  1511.  
  1512. * QUIT forces a script file to end, and return to the shell.
  1513.   An optional error code can be passed back (ie. 5=WARN 10=ERROR
  1514.   15=BAD 20=FAIL etc).
  1515.  
  1516. eg.     quit 5
  1517.         quit
  1518. --------------------------------------------------------------------------
  1519. REVIEW [bytesize|S|C]
  1520.  
  1521. With the reviewbuffer you can see that again what scrolled out of the
  1522. window or was redirected. In the reviewbuffer are all outputs stored.
  1523. To see what is in the reviewbuffer just press SHIFT TAB. This activates
  1524. the MORE text reader.
  1525. * "REVIEW bytesize" (re)creates a reviewbuffer with the given size.
  1526. * "REVIEW 0" removes the reviewbuffer.
  1527. * "REVIEW" without arguments shows the adress and size of the current
  1528.   reviewbuffer.
  1529. * "REVIEW C" clears the reviewbuffer.
  1530. * "REVIEW S filename" saves the reviewbuffer to that file.
  1531.  
  1532. eg.     review 10000        {starts normal reviewbuffer}
  1533.         review 50000        {starts big reviewbuffer}
  1534.         review 0            {deletes reviewbuffer}
  1535.  
  1536. NOTE 1: Because it uses a circular buffer with fixed size, this is much
  1537.   faster than having a fixed number of lines. The decrease in scrolling
  1538.   speed is neglible.
  1539. NOTE 2: The Write function of the dos.library will be patched, so
  1540.   there might be problems with other programms that patch this too.
  1541. --------------------------------------------------------------------------
  1542. RUN [-C] commandline
  1543.  
  1544. * RUN executes a commandline in a separate process. If you want to
  1545.   execute several commands, you can separate them with \; .
  1546. * If you do not need a window, you can specify the "-C" option.
  1547.  
  1548. eg.     run dir ram:
  1549.         run -c assign libs: df0:libs
  1550. --------------------------------------------------------------------------
  1551. SETCLOCK LOAD|SAVE
  1552.  
  1553. * SETCLOCK only works if you have a battery backed up clock (BBUC).
  1554.   It accesses the adresses $DC0000 and I do not know if it works
  1555.   with very old or very new (A1200) clocks.
  1556. * SETCLOCK LOAD sets the systemtime (you can see the systemtime with
  1557.   DATE or MEMCLK) to the time in the BBUC (hopefully this is the
  1558.   right time).
  1559. * SETCLOCK SAVE first resets the BBUC, then stores the systemtime
  1560.   to the BBUC.
  1561.   To set the BBUC to the right time, use DATE to set the correct
  1562.   date and time, then use SETCLOCK SAVE.
  1563.  
  1564. eg.     setclock load
  1565.         setclock save
  1566. --------------------------------------------------------------------------
  1567. SKIP label
  1568.  
  1569. * SKIP searches for the label within the current script file. If it
  1570.   finds it, execution continues from that point onwards. Labels
  1571.   are specified using the LAB command.
  1572.  
  1573. eg.     lab myloop
  1574.         dir ram:
  1575.         ask "list ram again? "
  1576.         if warn
  1577.            skip myloop
  1578.         endif
  1579. --------------------------------------------------------------------------
  1580. STACK [size]
  1581.  
  1582. * Allows you to view or alter the current stack size.
  1583.  
  1584. eg.     stack            {shows the current stack size}
  1585.         stack 30000      {sets current stack = 30000 bytes}
  1586. --------------------------------------------------------------------------
  1587. UNALIAS [alias1] [alias2] [alias3] [alias4] ...
  1588.  
  1589. * UNALIAS removes one or more alias definitions from the alias list.
  1590.  
  1591. eg.     alias f1 "cd df0:;dir^M"
  1592.         alias f2 "cd df1:;dir^M"
  1593.         ...
  1594.         alias f10 "ed df1:s/startup-sequence^M"
  1595.  
  1596.         unalias f1 f2 f3 f4 f5 f6 f7 f8 f9
  1597.         ...
  1598.         unalias f10
  1599. --------------------------------------------------------------------------
  1600. WAIT timeout
  1601.  
  1602. * WAIT halts processing for the time given. Timeout is in seconds.
  1603.   You can abort this with CTRL-C.
  1604.  
  1605. eg.     echo "I'll wait a minute"
  1606.         wait 60
  1607. --------------------------------------------------------------------------
  1608. Comments
  1609.  
  1610. ; blah blah blah blah
  1611. * etc etc etc
  1612. # hello ma
  1613.  
  1614. * Placing a semi-colon, an asterisk or a hash character as the 1st
  1615.   character in the line of a script file allows you to place comments
  1616.   in it.
  1617.  
  1618. eg.   ; This is a comment line
  1619.  
  1620. * If you want to place a comment at the end of a line, you have to
  1621.   put ;# before it.
  1622.  
  1623. eg.   info;#to see something interesting
  1624. --------------------------------------------------------------------------
  1625.  
  1626.  
  1627. --------------------------------------------------------------------------
  1628. Builtin Commands for Advanced Users
  1629.  
  1630. These commands are thought for users with a deeper knowledge of the
  1631. system. Maybe they are also useful for those not knowing of the system
  1632. internals. Just try the examples to find that out.
  1633.  
  1634. Break task_description [signalmask|C|D|E|F]
  1635. Ctrl [max_16_chars | -C [ignore_name] | -R 8_colour_digits]
  1636. Die device
  1637. DiskChange device
  1638. GetMsg [portname]
  1639. Locate [-C] lock|filename
  1640. M [start_address] [end_address]
  1641. PutMsg port_description [number1|string1] [number2|string2] ...
  1642. Show D|I|L|M|P|R|S|T|V
  1643. Strings sourcefile [count]
  1644. TaskPri priority [task_description]
  1645. --------------------------------------------------------------------------
  1646. BREAK task_description [signalmask|C|D|E|F]
  1647.  
  1648. * BREAK sets some signals at a given task
  1649. * task_description can be one of:
  1650.   - task/process name (case dependent !)
  1651.   - task/process adress
  1652.   - CLI-process number (one from 1 to 20)
  1653.   - zero (0) for this task
  1654.   It will be checked if the node-type field contains TASK or PROCESS
  1655. * signalmask is a longword; all bits, which should be signalled,
  1656.   must be 1 . Alternatively you can specify c,d,e or f to set
  1657.   the according signal to CTRL-C,-D,-E or -F. (CTRL-C is bit 12)
  1658. * BREAK without signalmask (and c,d,e,f) given sets all signals the
  1659.   task is waiting for.
  1660.  
  1661. eg.     break RexxMaster    {and it will be gone...}
  1662.         break Exchange c    {Exchange will get itself off too}
  1663.  
  1664. eg. If 2 ZShells are running. The one with the CLI-number 1 (get that
  1665.     out with prompt %n) lists a very large directory. You can break
  1666.     that by using the other ZShell typing:
  1667.         break 1 c
  1668.     Thats the same like you pressed CTRL-C on the ZShell number 1.
  1669. --------------------------------------------------------------------------
  1670. CTRL [max_16_chars | -C [ignore_name] | -R 8_colour_digits]
  1671.  
  1672. This command is for changing the default settings.
  1673. * CTRL is for command-line-editing-keys-definitions (great word :).
  1674.   In other words: You can change the meaning of keys pressed with
  1675.   CTRL (Control) and some other keys (TAB ^I, Backspace ^H,
  1676.   Return ^M, Shift-Return ^J, ESC ^[).
  1677. * "CTRL" without arguments shows the current definitions.
  1678. eg.     ctrl
  1679.  
  1680. * "CTRL WQSEIX[RYHJMLAVn" (case dependent) sets the default settings.
  1681.   To change something, just change the character corresponding to
  1682.   the key pressed with CTRL. See some lines above for some CTRL-
  1683.   equivalents ( eg. TAB is same as CTRL-I ).
  1684.   You may get confused if you define one key twice.
  1685. eg.     ctrl QWKU         {half line deleting like OS2.0 shell}
  1686.         ctrl QWSEAXTIYMJH {...and you will have lots of fun}
  1687.  
  1688. * There is a special meaning with the 16th character. This is by
  1689.   default the point (.), which is displayed as a "n" (don't get
  1690.   confused). The point has a special meaning in some commands
  1691.   (ECHO,SEARCH,PUTMSG, dir back, force disk, abbreviation)
  1692.   and can be redefined using "CTRL WQSEIX[RYHJMLAVn", but replace the
  1693.   point by the character desired. The ASCII code must be between
  1694.   32 and 64.
  1695. eg.     ctrl WQSEIX[RYHJMLAV#  {# is now a special character}
  1696.  
  1697. * "CTRL -C" shows the ignored filenames for filenamecompletion.
  1698.   By default this is unset. (-C means here -Complete)
  1699. * "CTRL -C filedescription" defines which names are not completed.
  1700.   "filedescription" contains wild card(s) in most cases.
  1701. eg.     ctrl -c         {display ignore_name}
  1702.         ctrl -c *.info  {ignore *.info-files}
  1703.         ctrl -c *.info|*.bak {ignore files ending in .info and .bak}
  1704.         ctrl -c ~*.tex|*.dvi {complete only *.tex and *.dvi-files}
  1705.         ctrl -c ""      {unset ignore_name}
  1706.  
  1707. * "CTRL -R colours" defines the use of colours. "colours" has to be a
  1708.   8 digit number. The digit at position x defines to what colour number
  1709.   the default colour x is mapped to. Everything clear ? (I think no!)
  1710. eg.     ctrl -r 01234567   {sets the default colours}
  1711.         ctrl -r 01111111   {switches to one colour mode, very useful with
  1712.                             OS3.0+ to speed up scrolling}
  1713.         ctrl -r 01233321   {if you want to use only 4 colours}
  1714. --------------------------------------------------------------------------
  1715. DIE device
  1716.  
  1717. * DIE lets the handler of a device end itself.
  1718.   It seems not to work with most handlers. Works with CrossDOS
  1719.  
  1720. eg.     die PC0:
  1721. --------------------------------------------------------------------------
  1722. DISKCHANGE device
  1723.  
  1724. * Needed for devices which do not detect a diskchange.
  1725.  
  1726. eg.     mount rad:;diskchange rad:
  1727.   Makes your rad:-disk appear on the Workbench.
  1728.         diskchange ram:
  1729.   If the ram-disk does not exist yet, the handler will be started
  1730.   (and the ram-disk can appear on Workbench when done before LOADWB)
  1731. --------------------------------------------------------------------------
  1732. GETMSG [portname]
  1733.  
  1734. * GETMSG waits for a message arriving at the process-internal
  1735.   messageport (pr_MsgPort). The message will be shown, strings
  1736.   will be tried to detected (this could cause lots of enforcer hits).
  1737.   Then you will be asked if to reply the message. "y" replies it
  1738.   and should be used normally. "e" replies and gets back to waiting
  1739.   mode again. Abort waiting is possible with CTRL-C.
  1740. * "GETMSG portname" gives the process-internal port the given name.
  1741.   Then it behaves as described above.
  1742. * See PUTMSG for examples.
  1743. --------------------------------------------------------------------------
  1744. LOCATE [-C] lock|filename
  1745.  
  1746. * "LOCATE lockadress" (lockadress is a BPTR) shows information about
  1747.   that lock structure. fl_Access must be -1 (write) or -2 (read).
  1748. * "LOCATE filename_or_dirname" gets an ACCESS_READ lock structure on
  1749.   that file/dir. (If you type -1 after the filename you should get
  1750.   an ACCESS_WRITE lock, but there seems to be an error in DOS !)
  1751. * "LOCATE -C lockadress" unlocks (removes) the lock structure.
  1752.  
  1753. eg.     locate &21f45c      {shows lock on adress $21f45c}
  1754.         locate $9f5b7       {shows lock with BPTR $9f5b7}
  1755.         locate -c $9f5b7    {removes this lock}
  1756.         locate ram:rdit     {tries to read-lock ram:rdit}
  1757.         locate ram:rdit -2  {same as above}
  1758.         locate c:mount -1   {got a write-lock on c:mount ?}
  1759. --------------------------------------------------------------------------
  1760. M [start_address] [end_address]
  1761.  
  1762. * M is a memory contents dumping command.
  1763. * Typing M with a start and end address will display the hex and
  1764.   ASCII contents of those bytes in the memory locations specified.
  1765. * Typing M with only a start address will display 160 bytes
  1766.   starting at the location specified.
  1767. * Typing M with no parameters will display 160 bytes starting
  1768.   from the current memory location.
  1769. * The current memory location is always one location higher than
  1770.   the last location shown by a prior M command.
  1771.  
  1772. eg.   m $70000 $77fff
  1773.       m $fc0000
  1774.       m
  1775. --------------------------------------------------------------------------
  1776. PUTMSG port_description [number1|string1] [number2|string2] ...
  1777.  
  1778. * PUTMSG is useful for testing programms which wait for a message,
  1779.   or to reactivate a task that waits for a message which will never
  1780.   arrive. PUTMSG sends a message to the given messageport.
  1781. * port_description can be given in 5 (!) ways:
  1782.   - Name of the messageport
  1783.   - Adress of the messageport
  1784.   - 3 ways of a task_description, see BREAK. This MUST be a Process
  1785.     because the process-internal messageport will be used.
  1786. * number|string is a longword number or a string. If it is a number,
  1787.   it will just be added to the message. If it is a string, a
  1788.   adress pointing to this string will be added to the message.
  1789.   If number1|string1 was a point (.), the message will be initialized
  1790.   as an DOS-Packet.
  1791. * After sending the message PUTMSG will wait for the reply and show
  1792.   that reply like GETMSG. Abort waiting with CTRL-C.
  1793. WARNING: Your machine might CRASH if you send a message to a
  1794.   (Process-internal) port that is not waiting for this message.
  1795. NOTE: PUTMSG without arguments makes a DisplayBeep (even without a
  1796.   window) and outputs the internal register value of A5.
  1797.  
  1798. eg.     putmsg testtask $21fd68 12
  1799.         putmsg testport "Hello World!"
  1800.  
  1801.   If you have 2 ZShells, execute in the one with CLI-number 1
  1802.   "getmsg". Activate the other shell and type
  1803.         putmsg 1 "like some chatting ?"
  1804.   The ZShell no. 1 should display that and prompt "reply ?". Answer
  1805.   "y" and the message goes back again.
  1806.   Now try "getmsg wurgutz" at one ZShell and "putmsg wurgutz $abcd"
  1807.   on the other. Do not forget to reply.
  1808.  
  1809. * You can use PUTMSG to use the AREXX interface of a programm. This
  1810.   works with some programms even with OS1.3- and no AREXX-Package.
  1811. eg.     putmsg showdvi 0 0 0 0 0 "tofront" {gets ShowDVI to front}
  1812.   Instead of the first 0 you sometimes must write the adress of
  1813.   this task. If available replace the second 0 with a pointer to
  1814.   the rexxsyslib.library. The third 0 is called rm_Action. I do not
  1815.   know what it is for. The fourth and fifth are results, only
  1816.   interesting in the reply.
  1817. eg.     putmsg showdvi 0 0 0 0 0 "loadnew tex.dvi"
  1818.  
  1819. * Specify a point as first number if you want to send a DOS-Packet.
  1820. eg.     putmsg DF0 . 0 1023 0 0 -1     {same as LOCK DF0: ON}
  1821.   If you get $FFFFFFFF as 4th longword, it was successful.
  1822.  (with OS1.3- you need to use FileSystem instead of DF0)
  1823. --------------------------------------------------------------------------
  1824. SHOW D|I|L|M|P|R|S|T|V
  1825.  
  1826. * Shows some information about important exec-lists:
  1827.   - Devices
  1828.   - Interrupts
  1829.   - Libraries
  1830.   - Memory
  1831.   - Ports (MessagePorts)
  1832.   - Resources
  1833.   - Semaphores
  1834.   - Tasks (and Processes)
  1835.   - Vectors for reset-resident programs
  1836.   Use the first character of one of them as argument.
  1837. * The output means:
  1838.   - Adress: hexadecimal start adress of the structure
  1839.   - Pri   : Priority, often unused
  1840.   - Ver   : Number of version  (only with D,L,R)
  1841.   - Rev   : Number of revision (only with D,L,R)
  1842.   - Name  : Name
  1843.   - State : Task state (only with T)
  1844.   - SignWait : Signals, a waiting task waits for (only with T)
  1845.   - PT    : Pr means Process, Ta means Task, Tm means Task with
  1846.             Messageport like Process     (only with T)
  1847. * If displaying the tasklist, the CLI-number (-> CLI ?:) and the
  1848.   loaded command will be shown at processes with cli-structure.
  1849. * SHOW V displays some important execbase pointers, which give a
  1850.   good indication of whether a virus is present in your system.
  1851.   WarmCapture, CoolCapture, ColdCapture, KickTagPtr, KickMemPtr,
  1852.   and KickCheckSum are displayed. If any of these are are NOT
  1853.   zero, then either a virus, RAD, or virus protector or some
  1854.   other program that takes control of your machine when you
  1855.   reset, is present.
  1856.  
  1857. eg.     show d          {have a look at the device-list}
  1858.         show Devices    {same as above}
  1859.         show t          {This is REAL MULTITASKING ! :) }
  1860. --------------------------------------------------------------------------
  1861. STRINGS sourcefile [count]
  1862.  
  1863. * STRINGS displays all valid ASCII strings in a file which have a
  1864.   length greater than or equal to the count. If no count is given,
  1865.   a default of 10 characters is used.
  1866. * This command is very useful for finding out which libraries a
  1867.   program uses.
  1868.  
  1869. eg.     strings c:zshell 20
  1870.         strings c:mount
  1871. --------------------------------------------------------------------------
  1872. TASKPRI priority [task_description]
  1873.  
  1874. * TASKPRI sets the priority of a task, it can be displayed using
  1875.   "SHOW T". The priority must be between -127 and 128 and should
  1876.   be within -50 and 20 to avoid system-hangups. Standard is 0 .
  1877. * task_description is same as described at BREAK.
  1878. * With one argument TASKPRI sets the priority of this task.
  1879. * If task_description is given, TASKPRI sets the priority of the
  1880.   given task.
  1881. NOTE: I did not like to call this command CHANGETASKPRI, because
  1882.       this name is really too long.
  1883.  
  1884. eg.     taskpri 2       {This task will be preferred}
  1885.         taskpri -1 3    {affects CLI no. 3}
  1886.         taskpri 4 Workbench
  1887. --------------------------------------------------------------------------
  1888.  
  1889. --------------------------------------------------------------------------
  1890.  
  1891. --------------------------------------------------------------------------
  1892. Changes
  1893.  
  1894. UP TO V1.3:See the source code of the ZShell V1.3 release
  1895.            (for example on FISH disk 537).
  1896.            Author: Paul Hayter
  1897.            Source: 103 KByte, Executable: 13 KByte, Doc: 32 KByte.
  1898.  
  1899. V2.0:There were so many changes, I think there is no sense in listing
  1900.      them all here, because it may be longer than this document. So just
  1901.      read this document or the source code.
  1902.      All changes since V1.3 made by Martin Gierich. Released 14.10.94.
  1903.      Source: 180 KByte, Executable: 25 KByte, Doc: 72 KByte.
  1904.  
  1905. V2.1:* IMPORTANT FOR THOSE WHO USED ZSHELL V2.0: Do not start ZShell V2.1 *
  1906.      * if ZShell V2.0 is resident. This will crash your machine !         *
  1907.      * Do not use ZSH V2.0 with ZShell V2.1 and vice versa.               *
  1908.   - Added a review buffer to see that again what scrolled out of the
  1909.     window. A scrollbar will probably added in future.
  1910.   - Added possibility to specify window when starting from CLI.
  1911.   - Changed default CTRL-keys; added 2 new CTRL-keys (see HISTORY).
  1912.   - Changed usage of MORE (you can still use the cursor keys).
  1913.   - DIR now hides all these files that Filenamecompletion ignores.
  1914.   - Some bugs found with mungwall and scratch are fixed.
  1915.   All changes since V1.3 made by Martin Gierich. Released 11.12.94.
  1916.  
  1917. V2.2: I did some bugfixes and minor improvements (I have no time for more).
  1918.   - Fixed a REALLY NASTY BUG that trashed taskswitching when closing ZShell.
  1919.   - AmigaGuide-Documentation added !
  1920.   - RUN-Command added !
  1921.   - NEWCLI has a new argument template.
  1922.   - MORE is now "more fast". 8-)
  1923.   - Filenamecompletion (display-)beeps if no match
  1924.   - CTRL-J = Shift-RETURN puts the command line in History
  1925.     buffer without executing.
  1926.   - PROMPT now knows the args %s and %c :-) . Default Prompt
  1927.     changed to "%s> ".
  1928.   - Better building of the CLI-Interface when starting from WB.
  1929.   - Now the Pseudo-Assign PROGDIR: is provided (OS2.0+ only).
  1930.   - LIST -Q -R also works; DIR can also list recursive.
  1931.   - ECHO Hi There ! will now do the same as ECHO "Hi There !" .
  1932.   - Improved options when starting from CLI.
  1933.   - Tooltype for starting from WB without window: WINDOW=
  1934.   All changes since V1.3 made by Martin Gierich. Released 3.1.95.
  1935.  
  1936. V2.3: This time there are some real new features. Because now I have my
  1937.     OS3.1 Autodocs and Includes, I have added several features that can
  1938.     only be used with OS2.0+. There will be done version-checkings before
  1939.     using OS2.0+ specific stuff, so no need to be afraid of crashes
  1940.     (caused by this! :).
  1941.   - New Commands: MAKEICONMAKELINKFLAGS and MOVE.
  1942.   - DELETECOPYMOVEPROTECT and JOIN are fully rewritten !
  1943.     They now all use the directory-lister (for LIST and DIR)
  1944.     and therefore all support wildcards and recursive processing !
  1945.   - PATH-Command is now AmigaDOS compatible.
  1946.     Paths from Workbench are duplicated on starting.
  1947.   - Support of Hardlinks and Softlinks by MAKELINKLIST and DIR.
  1948.   - ASSIGN supports ADD, REMOVE, PATH and DEFER.
  1949.   - Redirection improved: Can also be redirected to MORE.
  1950.   - Can be iconified to an ApplicationIcon (see FLAGS).
  1951.   - Erroroutput is done by DOS. If your system is localized, this will
  1952.     be also localized.
  1953.   - DELETE DEVICE formats a disk quick,
  1954.     DELETE FORCE ignores delete-protection-bits.
  1955.   - ADDBUFFERS shows current number of buffers.
  1956.   - Filenamecompletion can show all matching files.
  1957.   - MORE supports "more keys" and checks windowsize.
  1958.   - ALIAS can work without surrounding quotes; now you
  1959.     have to remove \ before " ,sorry for any incompatibilities.
  1960.   - CHECK is moved to FLAGS, VEC is moved to SHOW V.
  1961.   - RESET removed: It was a hack ! RECOPY removed: Has anybody needed it ?
  1962.   - First line in Command History is the last changed line.
  1963.   - You can use ^* instead of ^$9b with ECHO and PROMPT.
  1964.   - PROMPT works like ECHO and can contain linefeeds.
  1965.   - Really faaaast searching in MORESEARCH and HELP.
  1966.     Does anybody know a program that searches faster ?
  1967.   - Bugfix and new options when starting from CLI.
  1968.   - New Tooltypes for starting from Workbench.
  1969.   - Read about an OS2.0+ version in the Chapter Future.
  1970.   - HELP only searches the current dir and S: for the manual.
  1971.   - Probably added some brand new nasty bugs and left some ugly old bugs :)
  1972.   - And what is best: The versionnumber is changed !  ;-) 
  1973.   All changes since V1.3 made by Martin Gierich. Released 10.02.95.
  1974.   Source: 210 KByte, Executable: 30 KByte, Guide: 95 KByte.
  1975.   Now there is not much of the original V1.3 release left, because most
  1976.   of the old parts are totally rewritten and size has more than doubled !
  1977. --------------------------------------------------------------------------
  1978. Tips and Hints
  1979.  
  1980. * Use MORE instead of TYPE.
  1981. * Useful aliases:
  1982.         alias arexx %1 %2 putmsg $1 0 0 0 0 0 "$2"
  1983.   So 'arexx showdvi "tofront"' is the same as the example in PUTMSG.
  1984.   If you want some shortcuts like MessyDOS:
  1985.         alias md makedir
  1986.         alias ren rename
  1987.         alias del delete
  1988.         alias dc diskchange
  1989.   These are only needed for OS1.3-:
  1990.         alias setenv %1 %2 echo >ENV:$1 $2
  1991.         alias getenv %1 type ENV:$1
  1992.         alias unsetenv %1 delete ENV:$1
  1993.  
  1994. * A script counting down from 10 to 0 (a bit complicated and slow) :
  1995.     failat 11 ; setenv helpenv 11
  1996.     lab backtohere
  1997.     copy >NIL: ENV:helpenv ENV:counter
  1998.     eval >ENV:helpenv |ENV:counter 1 -
  1999.     echo "Current number: " ; eval |ENV:helpenv
  2000.     if not error
  2001.        skip backtohere
  2002.     endif
  2003.  
  2004. * From Workbench assigns are most likely done by clicking an icon:
  2005.   For example if you have the assigns below in the script
  2006.         failat 10
  2007.         assign TEX: dh0:text/pastex
  2008.         assign MF: dh0:text/pastex/metafont
  2009.         putmsg
  2010.   you need to get a PROJECT ICON for that. Now define the default
  2011.   tool as ZSH (or ZShell) and a tooltype containing
  2012.         WINDOW=
  2013.   (case sensitive). That's all. Failat 10 breaks the script if
  2014.   an error occurs. Putmsg flashes the screen to indicate that
  2015.   everything was successful. No window will be opened.
  2016. --------------------------------------------------------------------------
  2017. Possibilities for Future Improvements
  2018.  
  2019. Planned for next version:
  2020. * Application-Window
  2021. * UNICS-like Pipes
  2022. * Fix that nasty bugs, that will show up just after releasing :-)
  2023.  
  2024. Other ideas/suggestions:
  2025. * Scrollbar for review-buffer
  2026. * Requester to choose file/dirname.
  2027. * Use Datatypes to execute every kind of file.
  2028. * Localize all outputs. But who wants to translate this documentation ?
  2029.   YOU ? I do not !
  2030. * Add more commands to the directory-lister (like makeicon,search)
  2031. * RENAME command with wildcard support: "rename *.asm *.s" would rename
  2032.   all files ending in .asm to the same name ending in .s ! Why does not
  2033.   something like this exist yet ?
  2034. * COPY asks to remove incomplete destination files.
  2035. * MAKEDIR can create nested dirs: If RAM: is empty "makedir ram:a/b/c"
  2036.   would create directory c in b in a in RAM: .
  2037. * SPLIT command as opposite to JOIN.
  2038. * Improve script file execution, like passing arguments,
  2039.   allow subroutine scripts and commands like FOR.
  2040. * More flexible environment variable handling.
  2041. * More options for the LIST command.
  2042. * Include MOUNT/INSTALL command.
  2043. * HEX option for MORE.
  2044. * Faster scrolling (jump scroll/1 bitplane scroll)
  2045. * Patch for 68000-Processors to be as fast as 68060/50MHz-Processors ;-)
  2046. * Write a stripped-down version for MessyDOS; after starting this would say:
  2047.   This is ZShell V2.x *** Fatal error: no multitasking system !  ;-)
  2048.  
  2049. If you want to see these or other improvements made, please write to me.
  2050. If you do not, please write to me, too :-)
  2051.  
  2052. Note that there is a 32K limit of the executable, because I only use
  2053. relative addressing (like in small data model).
  2054.  
  2055.  
  2056. I thought about making a separate version for OS2.0+:
  2057.  
  2058. Command-line-editing and review stuff could be done best (most powerful)
  2059. within a console-handler; there are already several available (as I know,
  2060. the only one that is Freeware is KingCon), so I do not want to write 
  2061. another one. The disadvantages of these I have seen is that you need to
  2062. change alot between mouse and keyboard and they are somehow slow on my
  2063. system (and do not work on OS1.3- systems) and memory-hungry.
  2064.  
  2065. Except for Command-line-editing and review, the inbuild commands are a
  2066. main advantage of ZShell. These commands could be moved to one executable
  2067. file; if this file was executed, it would create all inbuild commands
  2068. as resident commands that could be used by the normal Shell.
  2069. (This would be somehow like the MessyDOS COMMAND.COM file.)
  2070. So if you used this file and a separate console-handler, you could work
  2071. comfortably with the normal Shell.
  2072.  
  2073. If there are enough people asking for that, I will think about writing
  2074. such a "multi-command-file", but I will not write another console-handler.
  2075.  
  2076. And I have a really great idea what else to write: A video-backup-system
  2077. for storing all your files of your hard/floppy disks on an ordinary cheap
  2078. video-tape with a small, self-built hardware-interface. Yes, I know, that
  2079. already exits, but I have never heard about one that multitasks without
  2080. problems while backing up :-) . My first attempts to create this have
  2081. failed and are now one year ago :-(
  2082.  
  2083. And, last but not least, I have to invest lots of time in my studies and
  2084. I do not want to hang around all remaining time at the keyboard !
  2085. --------------------------------------------------------------------------
  2086. Copyright
  2087.  
  2088. Summary: ZShell is Freeware !
  2089.  
  2090. COPYRIGHT FOR THE V1.3 PART (by Paul Hayter)
  2091.  
  2092. ZSHELL IS FREELY DISTRIBUTABLE. YOU CAN DISTRIBUTE THIS AS LONG AS
  2093. THIS DOC FILE REMAINS WITH THE EXECUTABLE, AND THAT NO CHARGE IS MADE FOR
  2094. THEM (APART FROM A NOMINAL COPYING CHARGE). IF YOU FEEL LIKE SENDING
  2095. ME SOMETHING FOR THIS PROGRAM, SEND ME A POSTCARD!, A P.D. DISK, A
  2096. PROGRAM YOU'VE BEEN WORKING ON ,BUT DON'T SEND ME ANY MONEY (WELL, IF
  2097. YOU REALLY, REALLY WANT TO, I GUESS I COULD PUT UP WITH IT).
  2098.  
  2099. COPYRIGHT FOR THE V2.x PART (by Martin Gierich)
  2100.  
  2101. This may be confusing, that there are two copyrights, but I did
  2102. not like to change the original copyright notice. The parts belonging
  2103. to V2.x are marked in the source code with 'V2.x'.
  2104. ZSHELL IS FREELY DISTRIBUTABLE. YOU CAN DISTRIBUTE THIS AS LONG AS
  2105. THE TWO EXECUTABLES REMAIN WITH THIS DOCUMENTATION TOGETHER (AND PLEASE
  2106. DISTRIBUTE THE SOURCE FILES WITH THEM TOO), AND THAT NO CHARGE IS MADE
  2107. FOR THEM (APART FROM A NOMINAL COPYING CHARGE).
  2108. IT IS NOT ALLOWED TO USE ZSHELL COMMERCIALLY !
  2109. I would like to get your comment on ZShell to see if anybody is using it
  2110. and what can be improved.
  2111.  
  2112. DISCLAIMER
  2113.  
  2114. USE THE FILES OF THIS PACKAGE ON YOUR OWN RISK !
  2115. The authors are in no way responsible for what you are doing with it
  2116. or what it does to you or your soft- and hardware.
  2117.  
  2118. Amiga, AmigaDOS, AmigaGuide, Workbench and Kickstart are (or better: were ? :)
  2119. registered trademarks of Commodore-Amiga Inc. (Commodore, who is this ? :)
  2120. MessyDOS and UNICS are not really trademarks (as I know)  :-)
  2121. --------------------------------------------------------------------------
  2122. Credits
  2123.  
  2124. CREDITS FROM PAUL
  2125.  
  2126. Many thanks to Wayne for his invaluable help in doing the history
  2127. and command line editing parts of ZShell. Also, thanks to
  2128. Tim Strachan who asked for the history stuff.
  2129. ZShell was entirely written using Wayned by Wayne Hayter (various
  2130. versions). And was assembled with A68K V2.61 by Charlie Gibbs. And
  2131. linked with Blink V6.7 by the Software Distillery.
  2132.  
  2133. CREDITS FROM MARTIN
  2134.  
  2135. Many thanks to the ten people who wrote me: Laura, Igor, Willem, Nico,
  2136. Max, Alexandros, Christian, Oliver, Holger and Hans;
  2137. especially to those who did some betatestings !
  2138. I hope that in future some more people write to me.
  2139.  
  2140. Thanks to the administrators of Aminet and Funet for their great work.
  2141.  
  2142. Thanks to Frank for using ZShell :-)
  2143. --------------------------------------------------------------------------
  2144. Authors
  2145.  
  2146. Please send any correspondence and/or bug reports referring V1.3
  2147. to me at the address below:-
  2148.  
  2149.       Paul Hayter
  2150.       PO Box 331
  2151.       Ballina
  2152.       2478
  2153.       AUSTRALIA
  2154.  
  2155. Please send correspondence, bug reports, comments, suggestions
  2156. for future improvements etc. referring V2.x to this adress:
  2157.  
  2158.       Martin Gierich
  2159.       Narzissenweg 7
  2160.       76297 Stutensee
  2161.       GERMANY
  2162.  
  2163.   (I would really like to get a picture postcard from you, even if
  2164.   you just wrote a "Hello" on it !)
  2165.  
  2166.   If you have EMAIL access, it would be nice if you send me one
  2167.   at one of these adresses:
  2168.  
  2169.            uj3w@ibm3090.rz.uni-karlsruhe.de   (Internet)
  2170.    or to   uj3w@rz.uni-karlsruhe.de           (Internet)
  2171.    or to   UJ3W@DKAUNI2.BITNET                (Bitnet)
  2172.  
  2173.   I will try to reply EVERY EMail I get !
  2174.  
  2175.   Please tell me your system-configuration, at least your Kickstart-
  2176.   Version, so that I see which kind of systems should be most supported
  2177.   in future versions. My system is an A500 with 200 MB Harddisk, 3 MB RAM,
  2178.   Kickstart 2.04 and Workbench 2.1 and a VGA-Monitor with Fickerfixer.
  2179.   Note that large parts of ZShell were developped under Kickstart 1.3 !
  2180.   (Ah yes, and I have such a Vortex ATONCE AT-Emulator; the fastest thing
  2181.   it can do is to hang itself up, and they do not make any updates !)
  2182.  
  2183.       /\/\            o o
  2184.      / __ \ artin      <
  2185.     (_/  \_)         `---'
  2186. --------------------------------------------------------------------------
  2187.